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
.
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
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.
Wählen Sie in Eclipse IDE Ihre Projekteigenschaft -> c/c ++ Build -> Einstellungen aus.
/ usr/lib -lssl -lcrypto
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
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:
-ldl
-pthread
(Das direkte Hinzufügen der Bibliothek mit -lpthread ist nicht empfohlen )