簡體   English   中英

加載共享庫時出錯:libboost_system.so.1.45.0:無法打開共享對象文件:沒有這樣的文件或目錄

[英]error while loading shared libraries: libboost_system.so.1.45.0: cannot open shared object file: No such file or directory

我正在 Linux 上構建一個 C++ 可執行文件。 可執行文件鏈接到一些 boost 庫。

這是我嘗試運行二進制文件時的輸出:

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ./testfgci 
./testfgci: error while loading shared libraries: libboost_system.so.1.45.0: cannot open shared object file: No such file or directory

然后我在二進制文件上運行 ldd 來檢查依賴關系:

root@yourbox:~/work/dev/c++/projects/testfgci/dist/Debug/GNU-Linux-x86$ ldd testfgci 
    linux-gate.so.1 =>  (0x00380000)
    libboost_system.so.1.45.0 => not found
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00b50000)
    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x005f6000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0099a000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x001b3000)
    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00110000)
    /lib/ld-linux.so.2 (0x00ea2000)

我不確定為什么找不到 liboos_system.sl.1.45.0 SO。 我今天早些時候成功地構建了它。 誰能解釋一下?

找不到庫。

默認情況下,在/lib/usr/lib/etc/ld.so.conf指定的目錄中查找庫。

通常系統庫(如 boost,如果你通過你的包管理器安裝它)位於/usr/lib ,但它可能不是你的情況。

您的 boost 庫在您的系統上的什么位置? 你自己編譯的嗎? 在這種情況下,您應該告訴動態鏈接器使用LD_LIBRARY_PATH環境變量在它們所在的目錄中查找您的庫:

LD_LIBRARY_PATH="your/boost/directory" ./testfgci

我建議你使用你的包管理器安裝 boost 庫,無論如何,這會讓你的生活更簡單。

我知道這是一個舊的,但你可以運行ldconfig來重建你的 ld 緩存。 這樣你就不需要更新LD_LIBRARY_PATH

我只是想為 Ubuntu(和 Debian,我猜)的用戶添加一個注釋:這些系統具有擦除LD_LIBRARY_PATH的安全“功能”。 這不起作用:

/etc/environemnt~/.profile~/.bash_profile

export LD_LIBRARY_PATH=/usr/local/boost_1_54_0/stage/lib:$LD_LIBRARY_PATH

它適用於~/.bashrc ,但路徑將僅為這個特定的交互式 shell 設置。 這意味着,如果您從emacseclipse調用make ,它將無法工作,除非您已從 shell 而不是從啟動器啟動emacs

這對我有用:

echo -e "\n/usr/local/boost_1_54_0/stage/lib" | sudo tee -a /etc/ld.so.conf 
sudo ldconfig

正如peoro他的回答中提到的,使用包管理器安裝它。 例如,如果您使用的是 Ubuntu 18.04,請運行

sudo apt install libboost-filesystem1.65.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM