2012-08-31 58 views
0

當我在我的機器上編譯和鏈接.so文件時,它可以工作。當我嘗試將文件分發給某人時,他們正在收到錯誤。CC沒有鏈接libCrun.so.1

更具體地講,我建於:

-bash-3.00# uname -a 
SunOS bob 5.10 Generic_127127-11 sun4u sparc SUNW,Sun-Blade-1000 
-bash-3.00# CC -V 
CC: Sun C++ 5.9 SunOS_sparc Patch 124863-01 2007/07/25 

在生成文件中,我使用這些標誌:

CFLAGS=-m64 -library=stlport4 -KPIC 
LDFLAGS=-m64 -L/usr/lib/sparcv9 -lCrun -library=stlport4 -G 

我沒有看到我的機器上的任何錯誤,但是這錯誤正在報告中

ld.so.1: batch: fatal: relocation error: file lqtbatch: symbol __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mpkc_r1_: referenced symbol not found 

有點麻煩追查原因,但這裏有一些不同我看到了。在我的機器所示,LDD -r批:

ldd -r batch 
    libstlport.so.1 =>  /opt/SUNWspro/lib/stlport4/v9/libstlport.so.1 
    librt.so.1 => /lib/sparcv9/librt.so.1 
    libCrun.so.1 => /opt/SUNWspro/prod/lib/stlport4/v9/../../../usr/lib/v9/libCrun.so.1 
    libm.so.1 =>  /lib/64/libm.so.1 
    libc.so.1 =>  /lib/64/libc.so.1 
    libaio.so.1 => /lib/64/libaio.so.1 
    libmd.so.1 => /lib/64/libmd.so.1 
    /platform/SUNW,Sun-Blade-1000/lib/sparcv9/libc_psr.so.1 
    libm.so.2 =>  /lib/64/libm.so.2 
    /platform/SUNW,Sun-Blade-1000/lib/sparcv9/libmd_psr.so.1 

其餘的都在-r命令

libstlport.so.1 => /opt/SUNWspro/lib/stlport4/v9/libstlport.so.1 
librt.so.1 => /lib/sparcv9/librt.so.1 
libm.so.1 =>  /lib/64/libm.so.1 
libc.so.1 =>  /lib/64/libc.so.1 
libaio.so.1 => /lib/64/libaio.so.1 
libmd.so.1 => /lib/64/libmd.so.1 
symbol not found: __1cG__CrunKpure_error6F_v_  (./liblqtcr.so) 
symbol not found: __1cG__CrunKpure_error6F_v_  (./liblqtcr.so) 
...many of these... 
symbol not found: __1cG__CrunKpure_error6F_v_  (./liblqtcr.so) 
/platform/SUNW,SPARC-Enterprise-T2000/lib/sparcv9/libc_psr.so.1 
symbol not found: __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mpkc_r1_  (./liblqtcr.so) 
symbol not found: __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Gsubstr6kMLL_1_  (./liblqtcr.so) 
libm.so.2 =>  /lib/64/libm.so.2 
symbol not found: __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mrk1_r1_  (./liblqtcr.so) 
symbol not found: __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Hreplace6MLLrk1_r1_  (./liblqtcr.so) 
symbol not found: __1cDstdK_M_put_num4Ccn0ALchar_traits4Cc__Cb_6Frn0ANbasic_ostream3CTACTB__TC_4_  (./liblqtcr.so) 
symbol not found: __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Gassign6MpkcL_r1_  (./liblqtcr.so) 
/platform/SUNW,SPARC-Enterprise-T2000/lib/sparcv9/libmd_psr.so.1 

我的假設的LDD看到這是我錯誤地連接libCrun.so.1這是造成這些錯誤並在其他機器上導致錯誤。

任何幫助,將不勝感激

回答

0

LDFLAGS=-m64 -L/usr/lib/sparcv9 -lCrun ...

您應該刪除無論是從您的LDFLAGS-L/usr/lib/sparcv9-lCrun - SunStudio將所有正確添加他們自己的。

我的假設是,我錯誤地連接libCrun.so.1

編號:你用它連接正確。問題是在問題機器libCrun.so.1(顯然)根本沒有安裝。該庫應該默認安裝 - 沒有它,沒有C++應用程序通常會運行。你應該找出包裝libCrun.so.1屬於哪個包,並要求你的客戶/客戶安裝它。

+0

如果我做了一個靜態鏈接,會解決這個問題嗎? – user823848

+0

@ user823848靜態鏈接可能會解決*問題,但也可能會引入50個新問題。 UNIX上的靜態鏈接幾乎不是正確的答案。 –