web-dev-qa-db-fra.com

Comment utiliser OpenSSL dans GCC?

J'essaie d'utiliser openssl dans un programme gcc mais cela ne fonctionne pas. 

g++ server.cpp /usr/lib/libssl.a -o server

donne un message d'erreur, comme n'importe quoi avec l'option -l. Que dois-je taper sur la ligne de commande pour créer un lien avec openssl? Le fichier /usr/lib/libssl.a existe, mais malgré tout, je reçois toujours l'erreur de l'éditeur de liens no such function MD5() exists.

20
Jondo Zaro

Sans connaître exactement les erreurs que vous constatez, il est difficile de fournir une solution exacte. Voici ma meilleure tentative. 

D'après les informations que vous avez fournies, il semble que l'éditeur de liens échoue car il ne trouve pas de référence à la fonction md5 dans libssl.a. Je crois que cette fonction est en réalité dans libcrypto, vous devrez donc peut-être spécifier cette bibliothèque également.

g++ server.cpp -L/usr/lib -lssl -lcrypto -o server

24
jschmier

Vous ou autres pouvez trouver cet article developerWorks article utile:

Il décrit la plupart des choses que vous devez savoir pour décoller avec OpenSSL et C/C++. Si vous constatez que vous suivez presque toutes les mêmes étapes, cela peut vous aider à voir ce qui doit être fait. 

Bonne chance.

12
will

Dans Eclipse IDE, sélectionnez la propriété Votre projet -> C/c ++ Construction -> Paramètres 

/ usr/lib -lssl -lcrypto

5
user3343214

L'emplacement de la bibliothèque n'est pas fixe. Dans mon cas (Ubuntu 18.04), les fichiers .a sont situés dans /usr/lib/x86_64-linux-gnu/. Alors voici les étapes complètes:

1) installez la bibliothèque

Sudo apt install libss-dev

2) vérifiez les fichiers installés ,

dpkg-query -L libssl-dev

3) changez les drapeaux gcc -L(library directory) -l(library name), par exemple,

gcc XXX.c XXXXX.c -L/usr/lib/x86_64-linux-gnu/ -lcrypto -lssl
0
Alt Eisen

En plus des réponses acceptées, je n'ai pas pu compiler l'exemple OpenSSL pour AES-CCM:

https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c

Pour que cela fonctionne, je devais ajouter deux choses supplémentaires:

  • La bibliothèque de liens Dinamic: -ldl
  • La bibliothèque PThread à utiliser le support de threading POSIX: -pthread (L'ajout direct de la bibliothèque avec -lpthread est non recommandé
0
renzoe