ldconfigはライブラリファイルを見つけましたが、lddはそれを見つけることができませんでした。

ldconfigはライブラリファイルを見つけましたが、lddはそれを見つけることができませんでした。

OpenGLアクセラレータライブラリ(libGLとlibGLU)を構築し、それを特定のディレクトリに保存しました。また、OpenGLのソフトウェア/usr/lib/mali実装が/usr/lib/arm-linux-gnueabihf/etc/ld.so.conf/usr/lib/mali

ldconfigすべてのライブラリを探す:

$ sudo ldconfig -v
/usr/lib/mali:
libGLU.so.1 -> libGLU.so.1
libGL.so.1.2.0 -> libGL.so.1
/usr/lib/arm-linux-gnueabihf:
libGL.so.1 -> libGL.so.1.5.08005
libGLU.so.1 -> libGLU.so.1.3.08005

奇妙な部分は、ldconfigシンボリックリンクが作成されたが、libGL.so.1.2.0libGLUの出力がlddもはやあるということです。

ldd `which glxgears`
libGLU.so.1 => /usr/lib/mali/libGLU.so.1 (0xb6e4a000)
libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xb6bb5000)
libGL.so.1.2.0 => /usr/lib/mali/libGL.so.1.2.0 (0xb67f1000)

出力は、ソフトウェアの実装を維持libGLUしながら、ファイルがハードウェアアクセラレーションディレクトリからインポートされたことを示します。また、何らかの理由でロードされています。私が最終的に実行したのはソフトウェアの実装でした。libGLlibGL.so.1.2.0glxgears

何が起こっているのかを説明できる人はいますか?ソフトウェアライブラリ/usr/lib/arm-linux-gnueabihf/(実際にはパッケージの依存関係)を削除または上書きせずに、基本的にハードウェアアクセラレータライブラリをロードするにはどうすればよいですか?

PS /usr/lib/mali/:。LD_LIBRARY_PATH

ベストアンサー1

問題は実際に私のMakefile設定にあります。ライブラリを調べたところ、objdump根本的な原因が明らかになりました。

$ objdump -p libGL.so.1 |grep SONAME
SONAME               libGL.so.1.2.0

ldd最初のものは私がインポートしたもので、2番目のものはハードウェアアクセラレーションバージョン用に構築されているので、そのsonameを知っているので表示されlibGL.so.1ます。libGL.so.1.2.0glxgearslibGLUlibGLlibGL.so.1.2.0

回避策はsonameを-soname,libGL.so.1

おすすめ記事