LD_LIBRARY_PATH に問題があり、プログラムがライブラリを見つけることができません。

LD_LIBRARY_PATH に問題があり、プログラムがライブラリを見つけることができません。

この質問は既に stackoverflow で尋ねましたが、これは Linux 関連の質問でもあるので、ここにいる誰かが解決策を知っているかもしれません。大丈夫だと思います。

問題は、ARM Linux 上の Paraprof プログラムで 3D 視覚化を実行できないことです。私は OpenMPI を備えた armhf Debian Wheezy 7.1 を使用して小規模なクラスター (8 ノード) を実行しています。

私は Tau OpenMPI プロファイリング ツールを使用しており、このツールには Paraprof と呼ばれる非常に優れた視覚化ツールが備わっています。

paraprof での 3D 視覚化に問題があります。実行しようとすると、次のように表示されます。

/home/cluster/tool/tau-2.22.2/lib/libjogl_drihack.so :/home/cluster/tool/tau-2.22.2/lib/libjogl_drihack.so cannot open shared object: No such file or directory

パスが重複しているので、ライブラリ パスの設定に問題があると思います。興味深いことに、libjogl_drihack.so はこのディレクトリにあります。LD_LIBRARY_PATH は次のように正しく設定されています。

/usr/local/lib/:/home/cluster/tools/tau-2.22.2/arm_linux/lib/

OpenGL がインストールされており (glxinfo を実行できます)、すべての libjogl パッケージもインストールされています。

スクリーンショットを添付します。https://www.dropbox.com/s/x54xpo5c2kjzew8/tau1.png https://www.dropbox.com/s/mimze22pcl6vxkq/tau2.png

さらに詳しい情報:

root@master:~# ldd
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libjogl_drihack.so
    not a dynamic executable
root@master:~# ls /home/cluster/tools/tau-2.22.2/arm_linux/lib/lib*.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libjogl_awt.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libjogl_drihack.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libjogl.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTauDisable.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-depthlimit-mpi-pdt.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-depthlimit-mpi-pdt-trace.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-mpi-pdt.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-mpi-pdt-trace.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-param-mpi-pdt-profile-trace.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-param-mpi-pdt.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-pthread-pdt.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh-pthread.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAUsh.so
/home/cluster/tools/tau-2.22.2/arm_linux/lib/libTAU.so
root@master:~# uname -a
Linux master 3.8.13-bone26 #1 SMP Fri Aug 16 20:56:24 UTC 2013 armv7l GNU/Linux
root@master:~#

オープンGL:

root@master:~$ glxinfo | grep OpenGL
OpenGL vendor string:Mesa Project
OpenGL renderer string: Software Rasterizer
OpenGL version string: 2.1 Mesa 8.0.5
OpenGL shading language version string: 1.20
OpenGL extensions

Tau の構成スクリプトは、/usr/lib ディレクトリで libGL.so を探していましたが、私のシステムではこのファイルは /usr/lib/arm-linux-gnueabihf にあるため、/usr/lib にコピーしましたが、それでも見つかりません。同じエラーが続きます。

答え1

/home/cluster/tools/tau-2.22.2/arm_linux/lib/libjogl_drihack.so
    not a dynamic executable

これは、その通りの意味です。次の 1 つ以上の項目です。

  • 実際の .so ファイルではありません。
  • 実行できません。
  • 異なるアーキテクチャ用にコンパイルされています。

の出力を確認してくださいfile libjogl_drihack.so(正しいパスが必要です)。

私は openMPI や Tau のユーザーではありませんが、armhf Wheezy 用の Tau パッケージがあることに気付きました (少なくとも、raspbian 用はあります)。ただし、これが にインストールされるとは思えないので/home/cluster、明らかに別のものを使用しているようです。

システム上ですべてをコンパイルした場合、これも発生しないはずです。ただし、バイナリを他の場所からコピー/ビルドした場合は、それが問題になります (ARM アーキテクチャは複数あることに注意してください)。ディストリビューション パッケージを使用しない理由はありますか?

関連情報