c) FAIRE ERREUR& problème de lien: i386:x86-64 architecture de fichier d'entrée, incompatible avec la sortie i386
j'ai cette sortie avec 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 le réparer? : (
je joins 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
3 réponses
Vous avez probablement quelques vieux dossiers (au moins test1.o) compilé pour i386-x64. Vous pouvez supprimer ces vieux fichiers et relancer make. Si vous pouvez modifier le Makefile, essayez d'ajouter une ligne du genre:
clean:
rm *.o test1 test2 test3 test4 test5 testFor
puis quand vous courez make clean
il va enlever les vieux trucs, à quel point vous pouvez exécuter faire à nouveau.
j'ai eu le même problème. Le problème pour moi était que les fichiers objets étaient générés avec l'architecture i386 et j'essayais de faire le lien avec le linker x86_64. J'ai supprimé les fichiers objets générés à nouveau avec les options x86_64 et j'ai essayé de les lier à nouveau. Il fonctionne maintenant
Si le makefile généré par le système, vous devez exécuter ./ configurer pour en obtenir de nouvelles, puis recompiler.