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