Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con makefile (creo que no consigo enlazar bien los archivos)

Estas en el tema de Problema con makefile (creo que no consigo enlazar bien los archivos) en el foro de C/C++ en Foros del Web. ¡Buenas! Estoy programando una aplicación en C++ y para compilarla fácilmente he hecho un makefile que me ayude. No he tenido ningún problema hasta que ...
  #1 (permalink)  
Antiguo 05/07/2008, 11:00
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema con makefile (creo que no consigo enlazar bien los archivos)

¡Buenas!

Estoy programando una aplicación en C++ y para compilarla fácilmente he hecho un makefile que me ayude. No he tenido ningún problema hasta que me ha sido necesario declarar una clase que deseo usar en otra, y soy incapaz de conseguir arreglar el makefile para que enlace bien los archivos.

Como creo que no me explico suficientemente bien, voy a pegar aquí el makefile que he hecho y cómo son las dependencias de archivos.

En total tengo 3 clases y el correspondiente archivo principal que contiene el main. Para ello tengo los correspondientes archivos:
* a.h y a.cpp -> Archivo de cabecera de la primera clase y archivo fuente donde se implementa esta clase
* b.h y b.cpp -> Igual que los anteriores, pero para otra clase
* c.h y c.cpp -> Igual que los anteriores, pero para otra clase
* main.cpp -> Archivo que contiene el main y del que obtengo el ejecutable

Las dependencias de estas clases son:
main -> a y b
b -> c

En principio parece sencillo, pero por más que miro mi makefile, no consigo hacer que el código se enlace correctamente. He comprobado que los #includes "a/b/c.h" están donde tienen que estar (en los ficheros que los necesitan) y además están detrás de los #include<libreríac++>. El problema en concreto es que cuando referencio a la clase c dentro de funciones de la clase b me sale "undefined reference to <constructor clase c>" y "undefined reference to <destructor clase c>".

Aquí dejo mi makefile:

all: main clean

main: main.o a.o b.o
@echo Creando ejecutable main
@g++ -o main main.o a.o b.o -O3

main.o: main.cpp
@g++ -c -o main.o main.cpp -O3

a.o: a.cpp
@echo Creando objeto a
@g++ -c -o a.o a.cpp -O3

b.o: b.cpp c.o
@echo Creando objeto b
@g++ -c -o b.o c.o b.cpp -O3

c.o: c.cpp
@echo Creando objeto c
@g++ -c -o c.o c.cpp -O3

clean:
@echo Borrando ficheros objeto
@rm *.o

Estoy trabajando en linux, directamente con un editor de textos y con la consola.

Muchas gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 05/07/2008, 15:01
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con makefile (creo que no consigo enlazar bien los archivos)

Problema resuelto. Lo que no hacía en el makefile es añadir todos los ficheros objetos del proyecto cuando llamo al enlazador. Creía erróneamente que como c no se usa en main, no tenía que ponerla ahí. El makefile correcto quedaría como sigue:

all: main clean

main: main.o a.o b.o c.o
@echo Creando ejecutable main
@g++ -o main main.o a.o b.o c.o -O3

main.o: main.cpp
@g++ -c -o main.o main.cpp -O3

a.o: a.cpp
@echo Creando objeto a
@g++ -c -o a.o a.cpp -O3

b.o: b.cpp c.o
@echo Creando objeto b
@g++ -c -o b.o c.o b.cpp -O3

c.o: c.cpp
@echo Creando objeto c
@g++ -c -o c.o c.cpp -O3

clean:
@echo Borrando ficheros objeto
@rm *.o

De todos modos, muchas gracias a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:27.