2014-09-03 62 views
0

我們使用具有庫路徑詳細信息(使用-L選項編譯)的makefile創建了我們模塊的可執行文件。所有必需的庫都存在於該路徑中,並且已設置到LD_LIBRARY_PATH環境變量。但仍然在dbx中運行可執行文件時遇到以下錯誤。ld.so無法加載所需的庫

dbx MsgServer 
    For information about new features see `help changes' 
    To remove this message, put `dbxenv suppress_startup_message 7.2' in your .dbxrc 
    Reading MsgServer 
    Reading ld.so.1 
    ld.so.1: MsgServer: fatal: libcp.so: open 
    failed:  No such file or directory 
    terminating signal 9 SIGKILL 

我不想打聽爲什麼圖書館沒有鏈接。這裏是ldd的輸出。

ldd MsgServer 
    libcp.so =>  (file not found) 
    libftux.so => (file not found) 
    libfldap.so => (file not found) 
    libfdmq.so => (file not found) 
    libfbsafe.so => (file not found) 
    libdmq.so =>  /opt/messageq/lib/libdmq.so 
    libmqic.so => /usr/lib/libmqic.so 
    libsocket.so.1 => /usr/lib/libsocket.so.1 
    libc.so.1 =>  /usr/lib/libc.so.1 
    libnsl.so.1 => /usr/lib/libnsl.so.1 
    libdl.so.1 => /usr/lib/libdl.so.1 
    libCstd.so.1 => /usr/lib/libCstd.so.1 
    libCrun.so.1 => /usr/lib/libCrun.so.1 
    libm.so.1 =>  /usr/lib/libm.so.1 
    libw.so.1 =>  /usr/lib/libw.so.1 
    libthread.so.1 => /usr/lib/libthread.so.1 
    libmqmcs.so => /usr/lib/libmqmcs.so 
    librt.so.1 => /usr/lib/librt.so.1 
    libmqiz.so => /opt/mqm/lib/libmqiz.so 
    libmp.so.2 => /usr/lib/libmp.so.2 
    libaio.so.1 => /usr/lib/libaio.so.1 
    /usr/platform/SUNW,Sun-Fire/lib/libc_psr.so.1 
    /usr/lib/cpu/sparcv8plus/libCstd_isa.so.1 

任何幫助將不勝感激。

+0

LD_LIBRARY_PATH是否已導出?這些庫位於正確的目錄中嗎?庫是否與您的應用程序使用相同的ABI和CPU進行編譯? – haael 2014-09-03 10:34:44

+0

LD_LIBRARY_PATH被導出,我能夠看到路徑,當我回應該變量,並且所有的庫與我的應用程序編譯相同的CPU – knp 2014-09-03 10:37:20

+0

二進制是一個SUID(設置UID)程序?或者你是以root身份運行?你似乎在Solaris上運行。請注意,LD_LIBRARY_PATH不適用於SUID程序。 – 2014-09-03 12:59:16

回答

0

您的LD_LIBRARY_PATH是否已導出?你需要導出它。

+0

但是我能夠看到這些庫鏈接到我的二進制從一個用戶,但無法看到他們鏈接到我的可執行文件從另一個用戶在同一臺​​服務器上。路徑設置爲LD_LIBRARY_PATH,並將其導出到用戶配置文件中。 – knp 2014-09-03 10:47:06