2011-09-02 6 views
4

J'utilise Libcurl dans mon application avec le compilateur C et GNU sur une machine Linux. L'application utilise également des bibliothèques OpenSSL et d'autres bibliothèques. J'essaie de lier statiquement les bibliothèques, à l'exception de lcurl de liaison avec d'autres bibliothèques fonctionne très bien.Liaison statique libcurl en utilisant c

J'essaie de compiler comme ci-dessous.

gcc -static -I. -o test test.c -lz -lssl -lcrypto -lcurl 

Est-ce que je fais quelque chose de mal? Existe-t-il un moyen de forcer la liaison statique de certaines librairies (libc par exemple)?

+0

Qu'est-ce que le problème réel que vous rencontrez? Je suppose que curl se trouve dans un autre répertoire ... –

Répondre

3

Libcurl est elle-même liée à une autre d'autres bibliothèques, dont la plupart ne sont pas incluses dans votre ligne de commande de compilation. Par exemple, le mien (sur Debian squeeze) Liens contre:

  • libc
  • libcom_err
  • libcrypto
  • libdl
  • libgcrypt
  • libgnutls
  • libgpg-erreur
  • libgssapi_krb5
  • libidn
  • libk5crypto
  • libkeyutils
  • libkrb5
  • libkrb5support
  • liblber-2,4
  • libldap_r-2,4
  • libpthread
  • libresolv
  • librt
  • libsasl2
  • libssh2
  • libssl
  • libtasn1
  • libz

(Vous pouvez obtenir une liste similaire pour vous-même en exécutant ldd sur la bibliothèque sous Linux, ou otool -L sur Darwin.)