2016-03-25 14 views
1

複数の「シンボル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ライブラリよりも高い優先順位を持つ原因を知りません。

+0

お友達は 'dump -H -X32_64 'と 'dump -Tv -X32_64 'です。 (注:共有ライブラリは '/ usr/local/lib [64]'や '/ opt/lib [64]'のような標準的な場所にインストールできます)[もう一つの注意:OpenSSLは進化を続け、存在する。例えばSSLv2_関数は1.0.2.gで消えてしまった] –

+0

また、openssl + libssl.so + libcrypto.soは1つのパッケージの一部であり、それらの異なるバージョンをマージするべきではないことに気づくべきである。 –

+0

静的にリンクしました。問題を解決したようです。 – Phalgun

答えて

1

私は静的にリンクしています(無共有)、それはそれを解決した: -

OPENSSL_VERSION=openssl-1.0.2f 
On AIX: 
./Configure aix64-cc --prefix=$INSTALLDIR/openssl/product/$OPENSSL_VERSION --openssldir=$INSTALLDIR/openssl/product/$OPENSSL_VERSION/openssl threads no-shared 

EDIT: はまた、私はそれがSunOSの上に設置取得していたことから、ここでは命令

./Configure solaris64-sparcv9-cc --prefix=$INSTALLDIR/openssl/product/$OPENSSL_VERSION --openssldir=$INSTALLDIR/openssl/product/$OPENSSL_VERSION/openssl threads no-shared -KPIC 
があります
+0

Sun/Solaris/SparcとIbm/Aix/PowerPCが同じであることは間違いありませんか? –

+0

私はSunOとAIXの両方に取り組んでいたので、私は誤ってAIXの代わりにSunOsの指示を投稿しました。答えが更新されました。 – Phalgun

+0

@ZsigmondLőrinczy私はこの後に遭遇した別の質問[http://stackoverflow.com/questions/36315195/incorrect-shared-libraries-picked-in-aix?noredirect=1#comment60254071_36315195]を追加しました。あなたはそれを手伝ってもらえますか? – Phalgun

関連する問題