libssl 'SSL_load_error_strings@@OPENSSL_1.0.0'シンボルへの未定義参照

libssl 'SSL_load_error_strings@@OPENSSL_1.0.0'シンボルへの未定義参照

次のCMakeLists.txtを使用してください(AMAPにカットしようとしました)

https://gist.github.com/perbertoni/29200833dc562ab6ee2c

make接続すると、次のエラーが発生します。

/usr/bin/ld: CMakeFiles/blockmon.dir/bin/blockmon.cpp.o: undefined reference to symbol 'SSL_load_error_strings@@OPENSSL_1.0.0'
//lib/x86_64-linux-gnu/libssl.so.1.0.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

/usr/bin/ld: CMakeFiles/blockmonWithXmlRPC.dir/bin/blockmonWithXmlRPC.cpp.o: undefined reference to symbol 'SSL_load_error_strings@@OPENSSL_1.0.0'
//lib/x86_64-linux-gnu/libssl.so.1.0.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

Cmakeがターゲットとする2つの実行可能ファイルのそれぞれについて。出力:

ldd /lib/x86_64-linux-gnu/libssl.so.1.0.0

はい

linux-vdso.so.1 =>  (0x00007ffc5a1f4000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fad78c52000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fad7888d000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fad78688000)
/lib64/ld-linux-x86-64.so.2 (0x00007fad792bd000)

私はそれを使用していますUbuntu 14.04.2 LTS x64Debian 7.8 x64システム上参考にしてください効果がある

この要旨に基づいて実行可能なコードを切り取ろうとします。

https://gist.github.com/ppertoni/7c82c12683d4491339c1

答え1

開発者がシンボルを削除しました。バラよりhttps://github.com/openssl/openssl/blob/72257204bd2a88773461150765dfd0e0a428ee86/include/openssl/ssl.h#L1495あなたがしなければならないことは、#define OPENSSL_API_COMPAT 0x0908シンボルをマクロとして定義するためにどこかに追加することです。

関連情報