Hum, il faut que tu utilises l'option -c de gcc pour compiler tes .o, il évite de lancer le linker comme ça. Tirer de la page man de gcc:
When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. The ``overall options'' allow you to stop this process at any intermediate stage. For example, the -c option says not to run the linker. Then the output consists of object files output by the assembler.
Dans ce cas la liaison n'est faite que quand tu compiles le programme final.
Pour créer tes objets tu as donc des lignes du style:
gcc -c -o toto.o toto.c
Puis tu créé ton executable
gcc -o monprog toto.o tata.o tutu.o ...
Ca devrait marcher comme ça.
Si dans ton Makefile tu mets des entrées du style:
toto.o: toto.c
tata.o: tata.c
c'est ce qui est fait automatiquement.
Par ailleurs je suis aller farfouiller dans /usr/include et cette technique à l'air très employée dans la bibliothèque C standard de GNU, donc je pense que c'est une bonne méthode :)
[^] # Re: un peu de pub !
Posté par beb . En réponse au journal un peu de pub !. Évalué à 1.
When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. The ``overall options'' allow you to stop this process at any intermediate stage. For example, the -c option says not to run the linker. Then the output consists of object files output by the assembler.
Dans ce cas la liaison n'est faite que quand tu compiles le programme final.
Pour créer tes objets tu as donc des lignes du style:
gcc -c -o toto.o toto.c
Puis tu créé ton executable
gcc -o monprog toto.o tata.o tutu.o ...
Ca devrait marcher comme ça.
Si dans ton Makefile tu mets des entrées du style:
toto.o: toto.c
tata.o: tata.c
c'est ce qui est fait automatiquement.
Par ailleurs je suis aller farfouiller dans /usr/include et cette technique à l'air très employée dans la bibliothèque C standard de GNU, donc je pense que c'est une bonne méthode :)