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.0
へlibGLU
の出力が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
しながら、ファイルがハードウェアアクセラレーションディレクトリからインポートされたことを示します。また、何らかの理由でロードされています。私が最終的に実行したのはソフトウェアの実装でした。libGL
libGL.so.1.2.0
glxgears
何が起こっているのかを説明できる人はいますか?ソフトウェアライブラリ/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.0
glxgears
libGLU
libGL
libGL.so.1.2.0
回避策はsonameを-soname,libGL.so.1
。