Problème de compilation / liaison avec une librairie
Problème de compilation / liaison avec une librairie - C++ - Programmation
MarshPosté le 04-01-2006 à 21:38:02
Bonjour,
Voici le problème :
Je souhaite compiler le fichier "run.C" avec les 3 fichiers "a.o", "b.o" et "c.o".
Première approche : g++ run.C a.o b.o c.o -o run
Deuxième approche : ar r libtest.a a.o b.o c.o g++ run.C -ltest
Ces deux méthodes ne sont pas totalement équivalentes. Dans le cas de la première, mon programme fonctionne bien, mais pas dans le cas de la seconde, où tout se passe comme si le linker n'utilisait que ce qui est vraiment référencé par "run.C". Or, j'ai comme contrainte d'utiliser la deuxième méthode. Comment faire pour que cela fonctionne ? Peut-on rendre ces méthodes équivalentes avec des options supplémentaires ?
Merci !
PS : En fait, la deuxième méthode ne fonctionne pas car des variables globales dans les fichiers .o ne sont pas initialisées, contrairement à la première méthode. Je donnerai plus de détails si nécessaire...
Marsh Posté le 04-01-2006 à 21:38:02
Bonjour,
Voici le problème :
Je souhaite compiler le fichier "run.C" avec les 3 fichiers "a.o", "b.o" et "c.o".
Première approche :
g++ run.C a.o b.o c.o -o run
Deuxième approche :
ar r libtest.a a.o b.o c.o
g++ run.C -ltest
Ces deux méthodes ne sont pas totalement équivalentes. Dans le cas de la première, mon programme fonctionne bien, mais pas dans le cas de la seconde, où tout se passe comme si le linker n'utilisait que ce qui est vraiment référencé par "run.C". Or, j'ai comme contrainte d'utiliser la deuxième méthode. Comment faire pour que cela fonctionne ? Peut-on rendre ces méthodes équivalentes avec des options supplémentaires ?
Merci !
PS : En fait, la deuxième méthode ne fonctionne pas car des variables globales dans les fichiers .o ne sont pas initialisées, contrairement à la première méthode. Je donnerai plus de détails si nécessaire...