c makefile compiler-errors linker-errors incompatibletypeerror

c) error y enlace problema: i386: arquitectura x86-64 del archivo de entrada, incompatible con la salida de i386



makefile compiler-errors (3)

Probablemente tengas algunos archivos antiguos (al menos test1.o) compilados para i386-x64. Puedes eliminar estos archivos viejos y ejecutar make nuevamente. Si puede modificar el Makefile intente agregar una línea como:

clean: rm *.o test1 test2 test3 test4 test5 testFor

Luego, cuando ejecutes make clean se eliminarán las cosas antiguas, en cuyo momento puedes ejecutar make nuevamente.

Tengo esta salida con un mensaje de error cuando escribo "make" en la terminal !!

gcc test1.o dispatchQueue.o -o test1 -pthread /usr/bin/ld: i386:x86-64 architecture of input file `test1.o'' is incompatible with i386 output /usr/bin/ld: final link failed: Invalid operation collect2: ld returned 1 exit status make: *** [test1] Error 1

¿Hay alguien que pueda explicar por qué y cómo solucionarlo? :(

Estoy adjuntando makefile por si acaso

# Comment out the targets you don''t want. # Runs all of the tests. all: test1 test2 test3 test4 test5 testFor ./test1 ./test2 ./test3 ./test4 ./test5 ./testFor test1: test1.o dispatchQueue.o gcc test1.o dispatchQueue.o -o test1 -pthread test1.o: test1.c gcc -c test1.c test2: test2.o dispatchQueue.o gcc test2.o dispatchQueue.o -o test2 -pthread test2.o: test2.c gcc -c test2.c test3: test3.o dispatchQueue.o gcc test3.o dispatchQueue.o -o test3 -pthread test3.o: test3.c gcc -c test3.c test4: test4.o dispatchQueue.o gcc test4.o dispatchQueue.o -o test4 -pthread test4.o: test4.c gcc -c test4.c test5: test5.o dispatchQueue.o gcc test5.o dispatchQueue.o -o test5 -pthread test5.o: test5.c gcc -c test5.c testFor: testFor.o dispatchQueue.o gcc testFor.o dispatchQueue.o -o testFor -pthread testFor.o: testFor.c gcc -c testFor.c dispatchQueue.o: dispatchQueue.c dispatchQueue.h gcc -c dispatchQueue.c


Si se genera el archivo make para el sistema, debe ejecutar ./configure para obtener los nuevos, y luego volver a compilar.


Tuve un problema similar. El problema para mí fue que los archivos de objetos se generaron con arichitecture i386 y estaba intentando enlazar con el enlazador x86_64. Los archivos de objetos eliminados los volví a generar con las opciones x86_64 y traté de vincularlos nuevamente. Ahora funciona