![]() |
[AIDE] Ajout d'une Lib en C - Version imprimable +- N-PN White-Hat Project (https://n-pn.fr/forum) +-- Forum : Programmation (https://n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages compilés (https://n-pn.fr/forum/forumdisplay.php?fid=25) +--- Sujet : [AIDE] Ajout d'une Lib en C (/showthread.php?tid=2687) |
[AIDE] Ajout d'une Lib en C - sakiir - 11-02-2013 Salut , Salut, Alors voila j'ai toujours eu un problème pour ajouter une bibliothèque en C.. Alors c'est simple j'aimerais une sorte de mini tuto pour savoir comment faire de A à Z , Ça serait vachement cool , étant donné qu'on ne trouve pas grand chose sur google. Ps: Je vous garanti que ça en aiderai plus d'un ! hein InfamouzZ ? :p RE: [AIDE] Ajout d'une Lib en C - Yttrium - 11-02-2013 Euh tu peux juste préciser ton OS et ton IDE ? (Ubuntu Codeblocks != XP VS08) RE: [AIDE] Ajout d'une Lib en C - sakiir - 12-02-2013 Je suis sur ubuntu , oui j'avais oublié de préciser ! Et je n'utilise pas d'ide Nano + gcc RE: [AIDE] Ajout d'une Lib en C - ark - 12-02-2013 Admettons que tu veuille linker avec la lib curl. Pour cela, tu vas utiliser dans tes fichiers C des fonctions de cette lib. Il te faudra donc penser a inclure le fichier header correspondant. En l'occurrence : #include <curl/curl.h> Ensuite, ta ligne de compilation avec gcc va etre de cette forme: Code : gcc source.c -o prog -lcurl l'option -l permet de linker avec une lib deja présente sur ton système (dans le dossier /lib/ en théorie, mais ça dépends des distributions.) Si tu as toi meme cree une lib, et que tu veux linker avec, il faudra que tu precise le chemin d'acces. Pour cela, il faut utiliser l'option -L de gcc (admettons pour l'exemple que ta lib s'appelle libmy.so): Code : gcc source.c -o prog -L . -lmy RE: [AIDE] Ajout d'une Lib en C - sakiir - 12-02-2013 ok merci je vais voir si je peux le faire ! ![]() Admettons cette lib ? Comment je procède ? RE: [AIDE] Ajout d'une Lib en C - InFamouZz - 13-02-2013 quelle librairie tu veut mettre sakir ? #include <nom_libraire.h> RE: [AIDE] Ajout d'une Lib en C - sakiir - 14-02-2013 je sais inclure une librairie dans mon fichier .. Je ne sais pas l'installer sur la machine ! GTK par exemple SDL Curl Etc .. RE: [AIDE] Ajout d'une Lib en C - Sh4dows - 14-02-2013 Installation d'une lib : Si tu veux installer par exemple ncurses sous Debian et ses dérivés : Code : apt-get install libncurses5-dev Ensuite j'ajoute mon header ncurses dans mes .c : Code : #include <ncurses.h> Code : gcc *.c -lncurses Créer ta propre librairie : Souvent on donne l'extension .a à une librairie. Si tu veux par exemple compiler la tienne en .a il suffit de faire : Code : gcc -c file.c Code : ar cr libperso.a file.o Code : ranlib libperso.a ![]() Ensuite tu link ta lib lors de la compilation, sans oublier l'inclusion d'un .h listant les fonctions de ta lib.a !!! Code : gcc *.c -L chemin/lib/exemple/ -lperso RE: [AIDE] Ajout d'une Lib en C - sakiir - 14-02-2013 (14-02-2013, 01h40)Sh4dows a écrit : Installation d'une lib : Je te remercie beaucoup !!!! je comprends mieux ! RE: [AIDE] Ajout d'une Lib en C - oosfalte - 04-05-2013 Bonjour, quand je récupère des bouts de code en C sur le net je galère moi aussi pour retrouver les paquets qui installeront les headers demandés. J'ai trouvé une solution ici: http://www.debianhelp.co.uk/findfile.htm Donc on installe le paquet apt-file, on met à jour le cache 'apt-file update' et on cherche le header voulu (ou fichier quelconque), ce qui donne pour ncurses.h: Code : ~ # apt-file search ncurses.h Sinon connaissez vous un site qui fait le lien entre un fichier (header ou autre) et le paquet qui l'installe ? ok il ya cà :http://packages.debian.org/ , autant pour moi RE: [AIDE] Ajout d'une Lib en C - b0fh - 04-05-2013 Hello, La procédure que Sh4dows décrit concerne les librairies statiques, ç.a.d celles qui sont copiées a l'intérieur du binaire final pendant la phase d'édition de liens (ld). ça donne des binaires qui marchent partout, mais qui sont très lourds, et avec cette manière le système se retrouve a stocker plusieurs dizaines, voire centaines de fois le même code dans des binaires différents. Pour pallier à ce problème les systèmes récents utilisent des librairies dynamiques (.dll sous windows, .so sous unix). Pour gcc, lui passer l'option "-shared" (et plusieurs .o en argument) produira un fichier .so, qu'on va typiquement aller stocker dans /usr/lib ou /usr/local/lib. Pas besoin de passer par ar. Quand la librairie est dynamique, c'est le programme ld.so qui est chargé de trouver les libs au moment de l'exécution. Par défaut il cherche dans les endroits configurés dans /etc/ld.so.conf (si tu modifies ce fichier, il faut lancer la commande ldconfig, le package manager le fait en général automatiquement quand il ajoute des libs a un nouvel endroit). Sinon, pour faire le lien entre un fichier et le paquet qui l'installe, pour les distributions basée sur dpkg (que APT soit présent ou pas): Code : $ dpkg-query -L bash RE: [AIDE] Ajout d'une Lib en C - oosfalte - 04-05-2013 @b0fh merci j'ignorais l'histoire du ld.so. Après vérif, en effet j'ai 2 fichiers dans mon /etc/ld.so.conf.d pour la configuration. J'ai lu qu'on pouvait aussi modifier LD_LIBRARY_PATH. Pour ce qui est de dpkg-query -L ou -S il me semble qu'ils font leur recherche uniquement sur les paquets installés, non? Aujourd'hui j'avais besoin de sqlite3.h et apt-file m'indiquait le paquet libsqlite3-dev à installer alors que 'dpkg-query S /usr/include/sqlite3.h' ne trouvait rien de son côté. Code : ~# apt-file search sqlite3.h RE: [AIDE] Ajout d'une Lib en C - gruik - 04-05-2013 (04-05-2013, 20h51)oosfalte a écrit : Pour ce qui est de dpkg-query -L ou -S il me semble qu'ils font leur recherche uniquement sur les paquets installés, non? oui, c'est effectivement l'interet de apt-file sinon au lieu de dpkg-query j'utilisais dpkg directement perso, ça marche aussi (j'imagine que l'un est le frontend générique de l'autre ?) |