-1

我使用 2.15 glibc 在 Gentoo linux(x86_64) 上编译我的项目。
然后我用 glibc 2.12 将 *.so 复制到 centos 服务器(6.2 x86_64)。
当我运行命令时:

 LD_LIBRARY_PATH=/home/ray/deploy/lib:/opt/glibc-2.15/lib:$LD_LIBRARY_PATH ./deploy/proxy/scan

我得到了错误:

./deploy/proxy/scan: error while loading shared libraries: libchecksum.so: cannot open shared object file: No such file or directory

令我困惑的是,当我运行命令时:

 sudo LD_LIBRARY_PATH=/home/ray/deploy/lib:/opt/glibc-2.15/lib:$LD_LIBRARY_PATH  ./deploy/proxy/scan

有用。有人知道出了什么问题吗?
ldd信息:

linux-vdso.so.1 =>  (0x00007fff207c1000)
    libchecksum.so => /home/ray/deploy/lib/libchecksum.so (0x00007fcccced2000)
    libportscan.so => /home/ray/deploy/lib/libportscan.so (0x00007fccccccc000)
    libc.so.6 => /opt/glibc-2.15/lib/libc.so.6 (0x00007fcccc926000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fcccd0d5000)

它表明已找到 *.so。

感谢您的意见。
我尝试在服务器机器上编译,但问题仍然存在。
我尝试将 0777 提供给库并运行脚本,但仍然无法正常工作。

4

1 回答 1

1

setcap 或 sudo 禁用 LD_LIBRARY_PATH 变量。所以,它不起作用。
您可以在 gcc 中使用rpath选项,或者只是将共享库链接到 /usr/lib。

于 2013-06-20T01:29:00.760 回答