Ajouter -L /usr/local/ssl/lib/
dans la ligne de commande GCC, avant le -lcrypto
. Puisque vous construisez avec les en-têtes OpenSSL sous /usr/local/ssl
, vous devez également établir un lien avec la bibliothèque réelle sous le même préfixe (même si vous semblez n'en avoir qu'une statique installée, cela peut ou non être votre intention ; vous devrez peut-être réinstaller correctement votre OpenSSL construit à partir de la source).
(edit) Pour corriger le dlopen()
et amis non trouvés par le linker, ajoutez -ldl
dans la ligne de commande GCC. -ldl
indique à l'éditeur de liens de créer également un lien vers libdl.so, qui est la bibliothèque partagée contenant dlopen()
, dlsym()
, dlclose()
etc.; ces fonctions sont utilisées par OpenSSL en interne et donc, -ldl
est une dépendance indirecte lors de l'utilisation de -lcrypto
(sous Linux). Étant donné que vous créez un lien vers une version statique de libcrypto, vous devez établir un lien explicite contre toutes les dépendances indirectes.
Si vous n'êtes pas familiarisé avec les liens vers les bibliothèques appropriées, je vous suggère d'utiliser OpenSSL tel qu'il est installé à partir du gestionnaire de packages de votre système d'exploitation ; cela pourrait vous éviter des ennuis.
Cela pourrait être pertinent pour les personnes qui ont essayé de créer leur propre openssl à partir des sources, puis de l'utiliser pour compiler d'autres programmes (dans mon cas, Git)
Lors de la configuration d'openssl, ajoutez l'option 'shared' :
./config shared
Cela créera la bibliothèque partagée requise libcrypto.so
. Vous en trouverez plus dans le fichier INSTALL.
De plus, si vous rencontrez cette erreur pendant 'make'
"....can not be used when making a shared object
recompiler avec -fPIC
./config shared -fPIC