Ich arbeite an Red Hat Enterprise Linux Server Version 7.0 (Maipo). Der Server stellt OpenSSL 1.0.1 bereit. Beim Versuch, eine Verbindung zu OpenSSL herzustellen, erhalte ich viele Krypto-Fehler.Undefinierter Verweis auf `[email protected] '(und andere)
Hier ist meine Link-Befehl Befehlszeile (Reihenfolge wie in der Befehlszeile):
g++ -g -O2 -Wl,-rpath -o output file1.o libprivate_lib1.so -Lprivate_path -llib1 -ldl \
-lpthread -llib2 -lexpat -lgtest -lgtest_main -lboost_regex -lboost_filesystem -llzma \
-lcrypto private_lib2.so private_lib3.so -llib3
Hier sind einige der Fehler sind:
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssh2.so.1: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssh2.so.1: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssh2.so.1: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
/lib64/libssl.so.10: undefined reference to `[email protected]'
...
wenn ich laufe:
ll /usr/lib64/libcrypto.so
Ich bekomme
/usr/lib64/libcrypto.so -> libcrypto.so.1.0.1e
und beim Laufen:
objdump -tT /usr/lib64/libcrypto.so.1.0.1e | grep COMP_zlib
ich
000000000013e500 g DF .text 0000000000000002 libcrypto.so.10 COMP_zlib_cleanup
000000000013e460 g DF .text 000000000000009e libcrypto.so.10 COMP_zlib
so bedeutet es, dass ich es in dieser Bibliothek haben. Das Merkwürdigste ist, dass es in redhat 6.5/4 verknüpfen kann, aber mit redhat über 7. keine Vorschläge?
Die Frage ist unklar und es gibt viele mögliche Ursachen. Wir wissen nicht einmal, * was * Sie versuchen zu verknüpfen oder welche Versionen von welchen Tools Sie verwenden und wie Sie sie verwenden (z. B. CLI-Argumente) und so weiter. – ray
Vielleicht haben Sie vergessen auf libcrypto zu verlinken? Fügen Sie das Verknüpfungs-Flag "-lcrypto" ** nach den Flags für die Verknüpfung mit libssl hinzu. Oder Sie versuchen, eine inkompatible Bibliothek zu verknüpfen, die Sie auf einem Computer kompiliert haben, der nicht mit Red Hat 7.0 kompatibel ist. Auf jeden Fall ist es eine gute Idee, Ihr Problem im Detail zu beschreiben, z. Zeigen Sie uns den tatsächlichen Befehl, den Sie ausgeführt haben, der diese Ausgabe erzeugt hat. – nos
Ich verbinde mit crypto lib (hinzugefügt die Befehlszeile). Ich denke, es ist mit redhat 7. verwandt, weil es in der Lage ist, Redhat 6.5/4 zu kompilieren. – yehudahs