Probleme avec libcurl

Fermé
0cTeT Messages postés 39 Date d'inscription samedi 15 juin 2013 Statut Membre Dernière intervention 30 mars 2020 - 29 août 2014 à 19:25
mamiemando Messages postés 33140 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 juin 2024 - 1 oct. 2014 à 13:40
Bonjour,
Je cherche a utiliser libcurl, pour certains de mes programmes en c++. Malheureusement, malgré des heures de recherches il m'est impossible de trouver une version correcte me permettant d'utiliser les fonctions de bases de libcurl (je ne sais pas quelle version prendre, je suis sous linux (ubuntu), j'utilise codeblock, gnu gcc compiler). J'ai déjà installé libcurl3, téléchargé sous forme de .deb mais je n'ai aucune idée ou l'installation a eu lieu (je débute sous linux). J'ai retrouvé certains fichiers de libcurl dans /usr/lib/x86_64-linux-gnu comme par exemple libcurl.so, mais cela ne m'avance a rien ...
Merci de m'aider à installer cette librairie.


1 réponse

mamiemando Messages postés 33140 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 juin 2024 7 756
Modifié par mamiemando le 1/10/2014 à 13:45
Le mieux est effectivement d'installer ta librairie via le gestionnaire de paquets apt.

1) Installation

Au choix tu utilises directement des commande apt (genre apt-get) ou tu passes par la logithèque :
http://doc.ubuntu-fr.org/software-center

(mando@velvet) (~) $ apt-cache search libcurl | grep curl | grep dev
...
libcurlpp-dev - c++ wrapper for libcurl (development files)
...

Note : sous debian et les distributions qui en dérivent, les paquets de librairie permettant de développer sont nommés conformément au motif
lib*-dev
, d'où les grep ci-dessus.

Du coup pour l'installer :

sudo apt-get update
sudo apt-get install libcurlpp-dev

2) Où est-ce installé ?

J'ai envie de te dire, aucune importance, c'est dans un répertoire standard et g++ le retrouvera pour toi. Mais si tu es curieux tu peux regarder avec
apt-file
:

sudo apt-get install apt-file
apt-file update
apt-file list libcurlpp-dev

Tu verras que tu as des headers dans
/usr/include/curlpp
et
/usr/include/utilspp/
, donc dans ton code tu écriras par exemple :

#include <curlpp/Exception.hpp>
#include <utilspp/Singleton.hpp>

Note : Comme
/usr/include
est un répertoire standard, on peut directement utiliser
#include <..>
. Il n'est en outre pas utile de passer à
g++
l'option
-I /usr/include
qui est implicite.

3) Comment utiliser la librairie ?

Passons à la librairie. Tu vas vouloir soit linker avec la librairie dynamique (.so, l'équivalent d'une dll) soit avec la librairie statique (.a). La première solution est celle qu'on privilégie en générale, mais suppose que la librairie soit installée sur la machine qui veut lancer le programme. L'intérêt est qu'elle génère ainsi des exécutables moins gros. Pour lier ton programme avec une librairie .so, il suffit d'utiliser l'option
-l
de
g++
.

Ici les librairies fournies par ce paquets sont
/usr/lib/x86_64-linux-gnu/libcurlpp.so
et
/usr/lib/x86_64-linux-gnu/libutilspp.so
. Les librairies sont installées dans un répertoire standard, donc elles seront retrouvées automatiquement par g++ sans avoir à préciser dans quel répertoire les trouver. Par ailleurs sous linux, toutes les librairies dynamiques respectent le motif
lib*.so
. Dans l'option
-l
on enlève ce préfixe et l'extension, ce qui donnera typiquement :

g++ -Wall -O2 -c module1.c
g++ -Wall -O2 -c module2.c
g++ -Wall -O2 main.c module1.o module2.o -lutilspp -lcurlpp -o mon_executable

4) Pour aller plus loin

Idéalement ensuite tu es sensé écrire un Makefile (ce qui t'évitera de taper toutes ces commandes) ou encore mieux (mais c'est plus complexe), utiliser autotools. Pour cela je t'invite à regarder un tutoriel.

Bonne chance
0