Forum Programmation.c Intégrer une partie des librairies lors de la compilation

Posté par  .
Étiquettes : aucune
0
3
mai
2006
Bonjour à tous,

Je dois programmer un client de connexion destiné aux clients légers sous linux. Comme vous pouvez le savoir, ces client ne disposent que de très peu de librairies disponibles nativement...

Dans mon programme, j'utilise la libxml et la libcurl. Pour l'instant le seul moyen de faire tourner l'application sur un client léger est de compiler en static le tout.
Le problème, c'est que ça coûte en mémoire...

Ce que j'aimerai pouvoir faire, c'est d'intégrer les librairies qu'il me faut au binaire et le reste peut rester linké dynamiquement. Vous voyez ?

Dans mon cas je voudrais que dans mon programme soit intégré statiquement libcurl et libxml; le reste doit être dynamique..

Est-ce possible ? Si oui comment ?

Merci d'avance !

++
Mehdi
  • # Re

    Posté par  . Évalué à 3.

    Je sais pas si cette solution est très propre, mais un:

    gcc $(CFLAGS) -llib_dynamique1 -lib_dynamiqueX truc.c /usr/lib/libcurl.a /usr/lib/libxml.a

    devrait fonctionner:

    [gco@gc]:~% cc -o test test.c -lcurl
    [gco@gc]:~% ldd test
    libcurl.so.3 => /usr/lib/libcurl.so.3 (0xb7f1f000)
    libc.so.6 => /lib/tls/libc.so.6 (0xb7de9000)
    libidn.so.11 => /usr/lib/libidn.so.11 (0xb7db9000)
    libssl.so.0.9.7 => /usr/lib/i686/cmov/libssl.so.0.9.7 (0xb7d88000)
    libcrypto.so.0.9.7 => /usr/lib/i686/cmov/libcrypto.so.0.9.7 (0xb7c89000)
    libdl.so.2 => /lib/tls/libdl.so.2 (0xb7c86000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb7c74000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7f5f000)
    [gco@gc]:~% cc -o test test.c /usr/lib/libcurl.a
    [gco@gc]:~% ldd test
    libc.so.6 => /lib/tls/libc.so.6 (0xb7dc1000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7f04000)
    • [^] # Re: Re

      Posté par  . Évalué à 1.

      Merci de ta réponse, j'ai oublié un détail dans ma question mais c'est bon je pense avoir trouvé !

      Encore merci ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.