j'aimerais savoir comment créer une librairie (libtest.a) en c++ l'utiliser en c++ et en c sous linux
j'aimerais savoir comment créer une librairie (libtest.a) en c++ l'utiliser en c++ et en c sous linux
passionné de développement
Quel est le problème ? Produire le .a ? Ou bien linker du code C avec une biblio C++ ?
(Seul bémol des libs C++, le compilo qui compile/linke le programme final doit être le même que celui qui a produit la lib. C'est particulièrement vrai sous Windows (où il y a beaucoup de compilos différents), mais aussi parfois d'une version d'un compilo à la suivante.)
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
En fait mon pb c'est effectivement que je n'arrive pas à lier le (libtest.a) à l'ade de ranlib; lorsque je tape "ranlib libtest.a" linux ne produit pas d'erreur mais lorsque je veut utiliser la librairie, linux me signale que la librairie "test" n'a pas d'index et qe je dois utiliser ranlib pour le créer: je tourne en rond
passionné de développement
C'est quoi ta ligne de commande pour l'édition des liens ?
En fait voici toute ma démarche:
je suis dans le répertoire /home/
je crée le rep mylib et je me positionne dedans: cd mylib
je créé mylibtest.h suivant
je crée mylibtest.cpp suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #ifndef MYLIBTEST.H #def MYLIBTEST.H void helloworld(); #endif
je le compile avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include"mylibtest.h" #include<iostream> void helloworld() { std::cout<<"hello world\n"; }
g++ -c mylibtest.cpp
je crée le fichier librairie avec
ar cr libtest.a mylibtest.o
je lie les objets à l'intérieur avec
ranlib libtest.a
puis je crée le fichier exec.cpp qui utilisera cette lib
lorsque je le compile avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include"mylibtest.h" int main() { helloworld(); return 0; }
g++ exec.cpp -L. -ltest exec_cpp
j'obtient le message selon lequel la librairie test n'a pas d'index et que je dois utiliser la commande ranlib pour en créer 1.
je le fais et j'ai toujours le même message
je tourne en rond
passionné de développement
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager