2013-06-12 33 views
-1

我使用2.15 glibc在Gentoo linux(x86_64)上編譯我的項目。
然後,我將* .so和glibc 2.12複製到centos服務器(6.2 x86_64)。
當我運行命令:centos 6.2無法加載我的共享庫

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) 

它表明*被發現。所以。

感謝您的意見。
我嘗試在服務器機器上編譯,但問題仍然存在。
我試圖給0777的庫和運行腳本,但仍然無法正常工作。

+0

如果它在root下運行,而不是在普通用戶下運行,它可能是權限,不是? –

+0

您不能在系統中複製共享對象文件,因爲您會遇到衝突。在CentOS上編譯你的項目。 – trojanfoe

回答

1

setcap或sudo禁用LD_LIBRARY_PATH變量。所以,它不起作用。
您可以在gcc中使用rpath選項,或者將共享庫鏈接到/ usr/lib。