J'ai cette sortie avec un message d'erreur lorsque je tape "make" dans le 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
Y a-t-il quelqu'un qui peut expliquer pourquoi et comment y remédier? :(
J'attache un makefile juste au cas où
# 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
Vous avez probablement d'anciens fichiers (au moins test1.o) compilés pour i386-x64. Vous pouvez supprimer ces anciens fichiers et relancer make. Si vous pouvez modifier le Makefile, essayez d'ajouter une ligne telle que:
clean:
rm *.o test1 test2 test3 test4 test5 testFor
Ensuite, lorsque vous exécutez make clean
cela supprimera les anciens éléments, à quel point vous pouvez relancer make.
J'ai eu un problème similaire. Le problème pour moi était que les fichiers objets ont été générés avec l'architecture i386 et j'essayais de créer un lien avec l'éditeur de liens x86_64. J'ai supprimé les fichiers objets et les ai générés à nouveau avec les options x86_64 et j'ai essayé de relier à nouveau. Ça fonctionne maintenant
Si le makefile est généré pour le système, vous devez exécuter ./configure pour en obtenir de nouveaux, puis recompiler.