readelfは正しいバージョンのシンボルを表示しますが、コンパイルされたバイナリを実行したときに未定義のシンボル

readelfは正しいバージョンのシンボルを表示しますが、コンパイルされたバイナリを実行したときに未定義のシンボル

ここの指示に従ってvagrant-libvirtプラグインをコンパイルしました。 https://github.com/hashicorp/vagrant/issues/7039#issuecomment-488499883

コンパイルはうまくいきますが、実行すると次のエラーが発生します。

3: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
2: from /home/manu/.vagrant.d/gems/2.6.6/gems/ruby-libvirt-0.7.1/lib/libvirt.rb:11:in `<top (required)>'
1: from /opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/opt/vagrant/embedded/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': /usr/lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b - /home/manu/.vagrant.d/gems/2.6.6/gems/ruby-libvirt-0.7.1/lib/_libvirt.so (LoadError)

ただし、確認すると/usr/lib64/libk5crypto.so.3次の記号がエクスポートされます。

$ readelf -Ws /usr/lib64/libk5crypto.so.3 | grep EVP_KDF_ctrl
5: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND EVP_KDF_ctrl@OPENSSL_1_1_1b (5)

一方、私のシステム(RHEL 8)にはopenssl 1.1.1cがインストールされています。

rpm -qa | grep openssl
openssl-1.1.1c-15.el8.x86_64
openssl-pkcs11-0.4.10-2.el8.x86_64
openssl-libs-1.1.1c-15.el8.x86_64
xmlsec1-openssl-1.2.25-4.el8.x86_64
openssl-devel-1.1.1c-15.el8.x86_64

ここでどのような問題を解決する必要がありますか?間違ったライブラリをインストールしましたか?無効なldフラグを設定し、パスを含めましたか?

ベストアンサー1

おすすめ記事