Probleme avec libcurl

0cTeT Messages postés 45 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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