wake-up-neo.com

Wie verwende ich OpenSSL in GCC?

Ich versuche, openssl in einem gcc-Programm zu verwenden, aber es funktioniert nicht.

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

gibt eine Fehlermeldung aus, genau wie bei der Option -l. Was muss ich in die Befehlszeile eingeben, um eine Verknüpfung mit openssl herzustellen? Die Datei /usr/lib/libssl.a existiert, aber ich erhalte trotzdem den Linker-Fehler no such function MD5() exists.

20
Jondo Zaro

Ohne die genauen Fehler zu kennen, die Sie sehen, ist es schwierig, eine genaue Lösung zu finden. Hier ist mein bester Versuch. 

Nach den von Ihnen bereitgestellten Informationen hört sich der Linker an, weil er keinen Verweis auf die md5-Funktion in libssl.a findet. Ich glaube, diese Funktion befindet sich tatsächlich in libcrypto, daher müssen Sie möglicherweise auch diese Bibliothek angeben.

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

24
jschmier

Sie oder Andere können diesen Artikel developerWorks Artikel hilfreich finden:

Es beschreibt die meisten Dinge, die Sie wissen müssen, um mit OpenSSL und C/C++ auf den Weg zu gehen. Wenn Sie feststellen, dass Sie die meisten der gleichen Schritte ausführen, können Sie möglicherweise erkennen, welche Maßnahmen erforderlich sind. 

Viel Glück.

12
will

Wählen Sie in Eclipse IDE Ihre Projekteigenschaft -> c/c ++ Build -> Einstellungen aus. 

/ usr/lib -lssl -lcrypto

5
user3343214

Der Speicherort der Bibliothek ist nicht festgelegt. In meinem Fall (Ubuntu 18.04) befinden sich die .a-Dateien in /usr/lib/x86_64-linux-gnu/. Also hier sind die kompletten Schritte:

1) installiere die Bibliothek

Sudo apt install libss-dev

2) überprüfe die installierten Dateien ,

dpkg-query -L libssl-dev

3) die gcc-Flags -L(library directory) -l(library name) ändern, z.

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

Zusätzlich zu den akzeptierten Antworten konnte ich das OpenSSL-Beispiel für AES-CCM nicht kompilieren:

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

Damit es funktioniert, musste ich zwei weitere Dinge hinzufügen:

  • Die Dinamic-Verlinkungsbibliothek: -ldl
  • Die PThread-Bibliothek zur Verwendung der POSIX-Threading-Unterstützung: -pthread (Das direkte Hinzufügen der Bibliothek mit -lpthread ist nicht empfohlen
0
renzoe