PDA

Afficher la version complète : Linker une librairie avec gcc



Chaka
12/08/2006, 17h55
Salut! Voilà, j'ai installé une librairie allegro et je voudrais la linker dans la console en utilisant gcc pour pouvoir l'utiliser.

Comment dois-je faire? Merci.

Elle est dans mon répertoire /home... etc

Dudule-le-poisson
12/08/2006, 23h52
Gcc fait appel à l'utilitaire ld pour lier (statiquement ou dynamiquement) une lib à un binaire exécutable.

Pour utiliser ta lib, il te faut inclure :
-le chemin des en-têtes (*.h) lors de la compilation (-I/home/chaka/chemin/que/je/ne/devine/pas/includes)
-et le chemin de la lib compilée (*.so notamment) lors de l'édition de lien (le dernier appel à gcc en général : -L/home/chakaa/chemin/que/je/ne/devine/pas/lib).

Mais avant tout, pour utiliser ta lib, tu dois faire un programme qui en utilise des classes / structures / fonctions. Qu'est-ce que tu as programmé pour l'instant avec ta lib ? Tu utilises un Makefile ?

Chaka
13/08/2006, 00h22
J'ai rien compilé mais il y a des programmes d'exemple donc ce n'est pas un soucis pour la compilation.

J'ai juste à indiquer les bons chemins des include et lib comme tu dis.

J'ai téléchargé les dernières sources stables. Je les ai d'ailleurs compilées avec ./configure et make.

Voici le lien de cette librairie: Allegro (http://alleg.sourceforge.net/)

Dudule-le-poisson
13/08/2006, 02h03
Le plus simple c'est de faire un make install pour obtenir les en-têtes et les binaires dans des endroits plus "standards" que ton home (pour Allegro : les binaires dans /usr/local/lib et /usr/local/lib/allegro/4.2 et les includes dans /usr/local/include/allegro).

Ensuite, pour l'execution (exemple : programme "demo") : Édite /etc/ld.so.conf et rajoutes-y /usr/local/lib s'il n'y est pas déjà, exécute ldconfig et ton ./demo devrait rouler (je suis toujours aussi nul à ces jeux 2D moi)

Pour la compilation : gcc exhello.c -o exhello_test `allegro-config --libs`
Explications pour le allegro-config : j'ai eu un peu de mal à le trouver, mais c'est un pkg-config-like pour la lib Allegro ; bref, c'est un utilitaire pour faciliter la vie du développeur (enfin le développeur qui le connait ou qui a lu la doc je présume). Il renvoie sur la sortie standard les arguments qu'il faut donner au compilateur / éditeur de liens pour utiliser la lib Allegro :
--libs permet d'obtenir les chemins pour que l'éditeur de liens accède aux binaires de la librairie et fasse son boulot
--cflags permet d'obtenir les chemins pour que le compilateur accède aux en-têtes de la librairie et fasse son boulot*
Ces deux arguments sont bien sûr cumulables. Ça permet d'alléger les Makefile.

Si tout cela te parait obscur, ce lien devrait t'aider : Developpez.com : Mode d'emploi de GCC (http://c.developpez.com/tutgcc/book1.php)

Oila, bon courage maintenant http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

* copier/coller powa