2011-06-10 83 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