1

パッケージのライブラリ ディレクトリにインストールされる libtool を使用してビルドされたライブラリがあります/usr/local/lib/myprog/libmylib.so。libltdl を使用してコードにライブラリを動的にロードしています。このライブラリを 1 台のマシンにロードしようとすると、問題なく動作します。別の例では、同じビルドとライブラリが同じ場所にインストールされていると、「ファイルが見つかりません」というエラーが発生します。

lt_dlforeachfile(ライブラリをロードするために使用する)直前に呼び出すとlt_dlopenext、必要なライブラリが検索パスで見つかったことをファイル名を出力することで確認できます。しかし、その直後に、「ファイルが見つかりません」というエラーでロードに失敗します。助言がありますか?

アップデート

dlopenライブラリへの絶対パスを使用して明示的に指定するように切り替えてみました。これは、一部のシステムでは機能し、他のシステムでは機能しません。

4

1 に答える 1

2

libltdl が実際のエラーを隠していたことが判明しました。「ファイルが見つかりません」は、読み込んでいたライブラリが依存していた別のライブラリからのものでした。dlerror()エラーメッセージを印刷するために使用しているときにこれを発見しました。不足しているライブラリをインストールしたら、すべて問題ありません。

于 2010-10-15T17:59:15.830 に答える