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:~#

OpenGL:

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

这就是它所说的意思。它是以下一项或多项:

  • 不是真正的 .so 文件。
  • 不可执行。
  • 针对不同的架构进行编译。

检查输出file libjogl_drihack.so(您需要那里的正确路径)。

我不是 openMPI 或 Tau 用户,但我注意到有一个适用于 armhf Wheezy 的 Tau 软件包(或者至少有适用于 raspbian)。但是,我怀疑这会安装到 中/home/cluster,所以显然您正在使用其他东西。

如果您在系统上编译了整个内容,则也不应该发生这种情况。但是,如果您从其他地方复制/构建二进制文件,那就是您的问题(请注意,有不止一种 ARM 架构)。您有不使用发行版软件包的理由吗?

相关内容