2011-06-10 81 views
0

簡而言之...

C++程序,但隨後「錯誤:libboost_thread.so .1.46.1:無法打開共享目標文件:運行時顯示「沒有這樣的文件或目錄」。程序編譯罰款與升壓庫,但(使用升壓庫)編譯在Eclipse罰款運行它時,錯誤


詳細

我對C++運行的基本程序來檢查,我能正確使用升壓線程庫。

#include <boost/thread/thread.hpp> 
#include <iostream> 

void hello() 
{ 
    Std::cout<<」Hello, I am a thread」<<std::endl; 
} 

int main() 
{ 
    boost::thread th1(&hello); 
    th1.join(); 
} 

的代碼編譯好,所以我認爲,我已經安裝並正確設置了Boost庫(添加目錄包括等)

然而,當我嘗試運行該程序,我得到以下錯誤在CONSOL

error while loading shared libraries: libboost_thread.so.1.46.1: cannot open shared object file: No such file or directory 
+2

你試過在你的系統上找到libboost_thread.so.1.46.1文件嗎?它是否在搜索路徑中? – littleadv 2011-06-10 08:35:45

+0

libboost_thread.so.1.46.1在我的系統上,我可以找到它沒有問題。它也可以在圖書館目錄中找到。 – Andy 2011-06-13 12:14:28

+0

有沒有什麼你必須做的共享庫(.so)文件,使LD_LIBRARY_PATH看到他們? – Andy 2011-06-13 12:15:26

回答

3

消息你檢查,如果libboost_thread.so.1.46.1存在於LD_LIBRARY_PATH
將庫複製到您的LD_LIBRARY_PATH,此路徑在運行時搜索動態庫(so)。

+0

執行echo $ LD_LIBRARY_PATH給出空白響應 – Andy 2011-06-13 12:20:34

+0

LD_LIBRARY_PATH是編譯器在搜索爲鏈接指定的靜態庫或共享庫時查找的路徑集。通常只指定環境變量'LD_LIBRARY_PATH'中的路徑而不指定庫。這個錯誤是在執行期間加載動態庫的時候。 – user592748 2012-12-17 15:42:18

1

升壓線程是動態庫。必須在運行時找到程序才能運行(如Windows中的DLL)。

6

我有FreeFileSYnc一個非常類似的問題,編譯罰款,但由於不會推出一個libboost線程錯誤:

FreeFileSync: error while loading shared libraries: libboost_thread.so.1.51.0: cannot open shared object file: No such file or directory 

要解決它,我做的事:

sudo ldconfig /usr/local/lib 

它可以幫助其他人。

1

晚會有點晚,但整天都有同樣的問題。我最近在本地安裝了最新的boost 1_51_0到我的$HOME/bin/boost_1_51_0。 什麼爲我工作,加入了這行我.bash_rc導出和庫路徑:

export CPP_INCLUDE_PATH=$HOME/bin/boost_1_51_0/include 
export LD_LIBRARY_PATH=$HOME/bin/boost_1_51_0/lib:$LD_LIBRARY_PATH 

然後添加include路徑和lib路徑您Makefile

INCLUDE_BOOST += -I$(HOME)/bin/boost_1_51_0/include 
LDLIBS_BOOST += -L$(HOME)/bin/boost_1_51_0/lib 

CPPFLAGS += $(INCLUDE) 
CPPFLAGS += $(INCLUDE_BOOST) 

然後你可以通過

LDLIBS += -lm 
LDLIBS += -lboost_filesystem 
LDLIBS += -lboost_chrono 
LDLIBS += -lboost_timer 
LDLIBS += -lboost_system 

$(TARGET): $(SRCS) 
    $(CXX) $(CPPFLAGS) $(LDLIBS_BOOST) $(SRCS) $(LDLIBS) $(OPT) -o [email protected] 
0

1_51添加庫我有同樣的問題,並ldconfig沒有解決它。

如果你像我一樣,安裝使用純bjam命令Boost庫,那麼你在階段子文件夾中安裝的庫。 See this page as a reference。什麼對我來說是運行以下內容:

sudo ldconfig /usr/local/include/boost_1_64_0/stage/lib