Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: chica_23 en 21 Marzo 2011, 20:06 pm



Título: No puedo compilar con make
Publicado por: chica_23 en 21 Marzo 2011, 20:06 pm
Hola estoy intentando compilar un programa en c++ utilizando el make, tanto el fichero simulador.cc como varaleat.cc compilan pero cuando llega el turno de promedio ,el terminal me pone lo siguiente

make: *** No hay ninguna regla para construir el objetivo `Promedio.o', necesario para `simulador'.  Alto.


He estado leyendo en distintas paginas pero siempre ponen algo relacionado con la compilacion del kernel y tambien con instalaciones y drivers..
No creo que ese sea mi problema, porque en un momento dado lo que me enseñaba el terminal era.

Estaba compilando unos archivos que me habian pasado por email los descomprimi en windows con el rar y los pase como una carpeta a linux, los abri , les eche un vistazo y los compile.

i386 architecture is incompatible with i386 x86 64


## Modulo:  Makefile
## Fecha:   25/10/00

.SUFFIXES: .o .c .cc


CCOMPILER = g++
CFLAGS   = -g  -Wall
CXXFLAGS = "-O3"
LIBS = -lm
SRCS = varaleat.cc simulador.cc
OBJECTS = varaleat.o simulador.o Promedio.o
EXEC=simulador


all: $(EXEC)

$(EXEC): $(OBJECTS)
   @echo [Creando ejecutable]
   $(CCOMPILER) $(CFLAGS) $(CXXFLAGS) -o $(EXEC) $(OBJECTS) $(LIBS)
   @chmod 755 $(EXEC)

.cc.o:
   @echo Compilando $<
   @$(CCOMPILER) $(CFLAGS) $(INCLUDE_PATH) -c $<
   @echo Hecho!!

clean:
   @echo [Haciendo limpieza]
   @rm -f *~ varaleat.o core
   @rm -f $(EXEC) $(GENERADOS)



#end Makefile

Este error dejo de aparecer pero aun no tengo muy claro porque.

Alguna idea de porque me salta ese error en el make??

Muchas gracias


Título: Re: No puedo compilar con make
Publicado por: oxydec en 22 Marzo 2011, 17:07 pm
Bueno, no lo entiendo demasiado porque con tantas variables me parece un poco criptico este Makefile, pero podrias probar de generar el codigo objeto de Promedio.o añadiendo algo como:

Promedio.o : Promedio.cc
$(CCOMPILER) $(CFLAGS) -c Promedio.cc -o Promedio.o

Si dices que los demas codigos compilan tambien podrias probar de añadir promedio.cc a la variable SRCS auqnue no le veo la logica ya que no veo que esa variable se use en ningun lado. Pero igual funciona automagicamente.

Tampoco entiendo de donde surge la variable $(INCLUDE_PATH) ni que significa $<


Título: Re: No puedo compilar con make
Publicado por: chica_23 en 22 Marzo 2011, 23:02 pm
Perdon es que lo escribi rapido no,rapidisimo siento no ser cuidadoso..Es la primera vez que compilo con make.Pero creo que ya se un poco de donde vienen los tiros. El promedio.cc no lo tengo, solo tengo el promedio.o generado de otra maquina , y el promedio.hh .EL problema "creo" que tampoco es que estea seguro es que ese objeto se genero en una maquina de 32 bits y yo el make lo uso en una de 64 .
Pero de todas formas ya he tenido mis desavenencias con aplicaciones de 32( sin ser en temas de compilacion) , por lo que acabe instalando el ia32libs .Parece que ahora esta libreria no importa demasiado porque me sigue diciendo que es incompatible

i386 architecture is incompatible with i386 x86 64

PD me gusto lo de automagicamente.Es como creo que funcionará este programa si algun dia funciona jajjaa


Título: Re: No puedo compilar con make
Publicado por: D4RIO en 25 Marzo 2011, 05:34 am
Si make dice que "No hay ninguna regla para construir el objetivo `Promedio.o', necesario para `simulador'" es definitivamente porque:

1) Promedio.o no existe
2) No hay una regla para generarlo

No se en Windows, pero en UNIX los nombres de archivo son case-sensitive, y make es una utilidad de Unix. Cualquier cosa me consultas, Saludos.