gcc, édition de lien

gcc, édition de lien - C - Programmation

Marsh Posté le 20-06-2007 à 11:07:21    

Bonjour,
 
Je cherche actuellement à réaliser une librairie dynamique (.so). J'ai donc écrit le code, qui utilise lui plusieurs librairies statiques (.a).
Je fais une édition de liens classique (-lMALIB etc ...) et j'obtiens donc l'exécutable de mon programme de test, qui me dit quand je le lance qu'il ne trouve pas une des fonctions contenue dans une librairie statique.
 
J'ai réussi à résoudre le problème en supprimant les liens avec les librairies statiques et en créant ma librairie statique avec les .o ayant servi à générer les librairies statiques.
 
Mais pour une optique de distribution, cette tâche ne s'avère pas pratique, je préfèrerais pouvoir faire la même chose sans passer par les .o, c'est à dire inclure directement les .a dans mon .so. Quelqu'un aurait-il une idée ?

Reply

Marsh Posté le 20-06-2007 à 11:07:21   

Reply

Marsh Posté le 20-06-2007 à 14:18:21    

Les bibliothèques ".so" sont avant tout des shared libraries. Le terme de bibliothèque dynamique s'applique plutôt aux ".dll".
 
Faire une recherche internet avec "gcc shared library".
Plusieurs pages donnent de bonnes explications, par exemple : http://www.adp-gmbh.ch/cpp/gcc/create_lib.html , http://www.ibm.com/developerworks/library/l-shobj/ , http://developer.apple.com/documen [...] tions.html
 
Il faut aussi faire attention au piège classique du débutant, mais peut-être pas pour vous, qui est que lors du link, derrière "-l", il faut indiquer le nom de la bibliothèque sans les trois premières lettres "lib", par exemple "-ljpeg" pour linker avec la bibliothèque "libjpeg.a".


Message édité par olivthill le 20-06-2007 à 14:21:15
Reply

Marsh Posté le 21-06-2007 à 09:48:49    

J'ai bien link correctement, c'est pour ça que l'erreur que j'obtiens m'étonne :(
 
Merci pour les liens, je vais voir ce que ça donne :)

Reply

Marsh Posté le 21-06-2007 à 10:10:15    

Hum rien trouvé de plus pour créer ma librairie shared sans avoir à relink les .o plutot qu'utiliser les librairies statiques :(

Reply

Marsh Posté le 21-06-2007 à 10:19:04    

c'est quoi l'erreur ?


---------------
Töp of the plöp
Reply

Marsh Posté le 21-06-2007 à 10:33:58    

J'ai pas l'erreur sous les yeux, mais j'utilise une librairie statique .a comprenant plusieurs fonctions, qui sont réutilisées par les fonctions de la librairie partagée .so.
 
La compilation et l'édition de liens se passent bien, mais lorsque je lance mon programme de test utilisant la librairie .so il me dit que les symboles de la librairie .a ne sont pas définis.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed