ldd无法在LD_LIBRARY_PATH中找到库

问题描述:

我试图让系统启动并运行,并且遇到了OpenMotif共享库的问题。我有他们的目录在LD_LIBRARY_PATH,但它仍然无法找到它们。ldd无法在LD_LIBRARY_PATH中找到库

下面是一个例子:

[[email protected] netcool]# ldd /opt/netcool/omnibus/platform/linux2x86/bin/nco_* |grep 'not found' 
    libXm.so.3 => not found 
    libXpm.so.4 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXpm.so.4 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
[[email protected] netcool]# find /usr/ -name libXm.so.3 
/usr/lib64/libXm.so.3 
[[email protected] netcool]# find /usr/ -name libXpm.so.4 
/usr/lib64/libXpm.so.4 
[[email protected] netcool]# echo $LD_LIBRARY_PATH 
/opt/netcool/omnibus//platform/linux2x86/lib/:/opt/netcool//platform/linux2x86/lib/:/usr/lib/:/usr/lib64/ 

我可能做一些愚蠢的事,但我想不出别的尝试。

编辑:要回答几个问题如下要求:

[[email protected] netcool]# export LD_LIBRARY_PATH 
[[email protected] netcool]# ldd /opt/netcool/omnibus/platform/linux2x86/bin/nco_* |grep 'not found' 
    libXm.so.3 => not found 
    libXpm.so.4 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXpm.so.4 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
[[email protected] netcool]# ldconfig 
[[email protected] netcool]# ldd /opt/netcool/omnibus/platform/linux2x86/bin/nco_* |grep 'not found' 
    libXm.so.3 => not found 
    libXpm.so.4 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXpm.so.4 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 
    libXm.so.3 => not found 

好了,只是试图运行可执行文件之一:

# ./bin/nco_xigen 
/opt/netcool//omnibus/platform/linux2x86/bin/nco_xigen: error while loading shared libraries: libXm.so.3: wrong ELF class: ELFCLASS64 

这是一个32位/ 64位的事情?

+1

您是否输出LD_LIBRARY_PATH? – vhallac 2012-04-26 20:37:59

+0

是的,LD_LIBRARY_PATH已设置并在〜/ .bash_profile中导出 – 2012-04-26 20:45:47

+0

您是否在您的环境中重新生成.bash_profile文件?对不起,开始这么基本,但它通常是基本的东西,让高级程序员绊倒... #EDIT它似乎你做了,因为回声打印出正确的目录。嗯... – Matt 2012-04-26 20:49:22

我所使用的二进制文件正在寻找32位版本的共享库,我安装了64位版本。愚蠢的错误。 LDD并没有产生非常有洞察力的错误信息,但是当我尝试运行它时,二进制文件就这样做了。

您是否已经导出LD_LIBRARY_PATH?关键字export告诉Bash将任何变量发送到子进程 - 否则ldd将永远不会看到LD_LIBRARY_PATH。