複数の「シンボルX(番号Y)が依存モジュールからエクスポートされていません」AIX 7.1で
エラー
Could not load program openssl:
Symbol resolution failed for /apps/10.00/openssl/product/openssl-1.0.2f/lib/libssl.so because:
Symbol EC_curve_nist2nid (number 73) is not exported from dependent
module /apps/tuxedo/product/12.1/lib/libcrypto.so.
Symbol EVP_aes_256_cbc_hmac_sha256 (number 274) is not exported from dependent
module /apps/tuxedo/product/12.1/lib/libcrypto.so.
Symbol EVP_aes_128_cbc_hmac_sha256 (number 275) is not exported from dependent
module /apps/tuxedo/product/12.1/lib/libcrypto.so.
Symbol X509_get_signature_nid (number 282) is not exported from dependent
module /apps/tuxedo/product/12.1/lib/libcrypto.so.
Symbol X509_chain_up_ref (number 312) is not exported from dependent
module /apps/tuxedo/product/12.1/lib/libcrypto.so.
Symbol X509_chain_check_suiteb (number 313) is not exported from dependent
module /apps/tuxedo/product/12.1/lib/libcrypto.so.
以下の依存関係です:
$ ldd `which openssl`
/cb/cb10b/rel/server/bin/openssl needs:
/apps/10.00/openssl/product/openssl-1.0.2f/lib/libssl.so
/apps/tuxedo/product/12.1/lib/libcrypto.so
/usr/lib/libpthreads.a(shr_xpg5_64.o)
/usr/lib/libc.a(shr_64.o)
/unix
libcrypto.soはタキシードやないのopensslから来ていることがわかります。 そこで、LIBPATHをエクスポートして、opensslをtuxedoライブラリの前に追加しました。これは以下のようにLDD出力を変更します -
export LIBPATH=/apps/10.00/openssl/product/openssl-1.0.2f/lib:$LIBPATH
$ ldd `which openssl`
/cb/cb10b/rel/server/bin/openssl needs:
/apps/10.00/openssl/product/openssl-1.0.2f/lib/libssl.so
/apps/10.00/openssl/product/openssl-1.0.2f/lib/libcrypto.so
/usr/lib/libpthreads.a(shr_xpg5_64.o)
/usr/lib/libc.a(shr_64.o)
/unix
/usr/lib/libcrypt.a(shr_64.o)
LDDの出力には、OpenSSLディレクトリから選ばれている依存ライブラリを示しているが。しかし、私はスクリプトを実行すると、私はまだ上記と同じエラーが発生します。 libcrypto.soの名前を何か他のもの(例えばlibcrypto.s.bkp)に変更すると、opensslからlibcrypto.soを実行している間に、libcrypto.soがTuxedoディレクトリで最初に検索されるようなものがあります後でopensslディレクトリに移動します。
私は、Tuxedoライブラリがopensslライブラリよりも高い優先順位を持つ原因を知りません。
お友達は 'dump -H -X32_64'と 'dump -Tv -X32_64 'です。 (注:共有ライブラリは '/ usr/local/lib [64]'や '/ opt/lib [64]'のような標準的な場所にインストールできます)[もう一つの注意:OpenSSLは進化を続け、存在する。例えばSSLv2_関数は1.0.2.gで消えてしまった] –
また、openssl + libssl.so + libcrypto.soは1つのパッケージの一部であり、それらの異なるバージョンをマージするべきではないことに気づくべきである。 –
静的にリンクしました。問題を解決したようです。 – Phalgun