• Lunes 18 de Noviembre de 2024, 04:36

Autor Tema:  Fallo En Makefile  (Leído 857 veces)

dmairena

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Fallo En Makefile
« en: Miércoles 23 de Junio de 2004, 12:49 »
0
¿Qué está mal en este Makefile? No encuentro el error.

EL PROBLEMA NO SON LOS TAB (aquí no salen)

# Ejecutable

simulador : princ.o otras.o ficheroentrada.o empaqueta.o paquetes.o listasalida.o
gcc -Wall -g -o simulador princ.o otras.o ficheroentrada.o empaqueta.o paquetes.o listasalida.o

princ.o: princ.c ctsytipos.h otras.h ficheroentrada.h empaqueta.h listasalida.h
gcc -Wall -g -o princ.o princ.c

otras.o: otras.c ctsytipos.h otras.h paquetes.h
gcc -Wall -g -o otras.o otras.c

ficheroentrada.o: ficheroentrada.c ctsytipos.h otras.h ficheroentrada.h
gcc -Wall -g -o ficheroentrada.o ficheroentrada.c

empaqueta.o: empaqueta.c ctsytipos.h otras.h empaqueta.h paquetes.h
gcc -Wall -g -o empaqueta.o empaqueta.c

paquetes.o: paquetes.c ctsytipos.h otras.h paquetes.h listasalida.h
gcc -Wall -g -o paquetes.o paquetes.c

listasalida.o: listasalida.c ctsytipos.h otras.h listasalida.h paquetes.h
gcc -Wall -g -o listasalida.o listasalida.c

clean:
rm *.o


ERROR :
 

guadalinex:/floppy/v15> make
gcc -Wall -g -o princ.o princ.c
/tmp/cc2SPeiO.o(.text+0x5d): En la funciуn `main':
/floppy/v15/princ.c:40: undefined reference to `Argumentos'
/tmp/cc2SPeiO.o(.text+0xa2):/floppy/v15/princ.c:51: undefined reference to `FicheroEntrada'
/tmp/cc2SPeiO.o(.text+0xd9):/floppy/v15/princ.c:61: undefined reference to `ObtenerPaquetes'
/tmp/cc2SPeiO.o(.text+0xfb):/floppy/v15/princ.c:69: undefined reference to `ListaSalida'
/tmp/cc2SPeiO.o(.text+0x11b):/floppy/v15/princ.c:77: undefined reference to `EscribeSalida'
/tmp/cc2SPeiO.o(.text+0x13e):/floppy/v15/princ.c:86: undefined reference to `CierraTodo'
collect2: ld devolviу el estado de salida 1
make: *** [princ.o] Error 1


NOTA : No utilizo macros porque no me parecen muy ъtiles con este nъmero de archivos.


Saludos. Gracias. Daniel.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Fallo En Makefile
« Respuesta #1 en: Jueves 24 de Junio de 2004, 19:24 »
0
Hola.

Para generar los .o hay que usar el parámetro -c para el gcc, para que sólo compile y no borre los temporales. De esta forma, cada parámetro -o sobraría ya que el nombre se asigna sólo: nombre_fuente.o. El de simulador quedaría igual.

Yo por costumbre suelo usar el -o al final. Mira un ejemplo de makefile que funciona como te he dicho:
Código: Text
  1. # Archivo Makefile para generar el servidor
  2. # Uso: make -f makeserver
  3.  
  4. # Las librerias van separadas por espacios
  5. LIBS := pthread
  6. INCLUDES := include/server include/common
  7.  
  8. bin/server: ircserver.o cserver.o sockets.o channels.o makeserver
  9.   g++ ircserver.o cserver.o sockets.o channels.o $(addprefix -l,$(LIBS)) -o bin/server
  10.  
  11. cserver.o: src/server/cserver.cpp include/server/cserver.h include/common/irc.h include/common/sockets.h makeserver
  12.   g++ -c $(addprefix -I,$(INCLUDES)) src/server/cserver.cpp -Wall
  13.  
  14. ircserver.o: src/server/ircserver.cpp include/server/cserver.h makeserver
  15.   g++ -c $(addprefix -I,$(INCLUDES)) src/server/ircserver.cpp -Wall
  16.  
  17. sockets.o: src/common/sockets.cpp include/common/sockets.h makeserver
  18.   g++ -c $(addprefix -I,$(INCLUDES)) src/common/sockets.cpp -Wall
  19.  
  20. channels.o: src/server/channels.cpp include/common/irc.h makeserver
  21.   g++ -c $(addprefix -I,$(INCLUDES)) src/server/channels.cpp -Wall
  22.  

Uso g++, pero es lo mismo con gcc.

Un saludo.

Ruben3d