程序编译罚款与升压库,但(使用升压库)编译在Eclipse罚款运行它时,错误
简而言之...
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
消息你检查,如果libboost_thread.so.1.46.1
存在于LD_LIBRARY_PATH
?
将库复制到您的LD_LIBRARY_PATH
,此路径在运行时搜索动态库(so)。
执行echo $ LD_LIBRARY_PATH给出空白响应 – Andy 2011-06-13 12:20:34
LD_LIBRARY_PATH是编译器在搜索为链接指定的静态库或共享库时查找的路径集。通常只指定环境变量'LD_LIBRARY_PATH'中的路径而不指定库。这个错误是在执行期间加载动态库的时候。 – user592748 2012-12-17 15:42:18
升压线程是动态库。必须在运行时找到程序才能运行(如Windows中的DLL)。
我有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
它可以帮助其他人。
晚会有点晚,但整天都有同样的问题。我最近在本地安装了最新的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]
从1_51
添加库我有同样的问题,并ldconfig
没有解决它。
如果你像我一样,安装使用纯bjam
命令Boost库,那么你在阶段子文件夹中安装的库。 See this page as a reference。什么对我来说是运行以下内容:
sudo ldconfig /usr/local/include/boost_1_64_0/stage/lib
你试过在你的系统上找到libboost_thread.so.1.46.1文件吗?它是否在搜索路径中? – littleadv 2011-06-10 08:35:45
libboost_thread.so.1.46.1在我的系统上,我可以找到它没有问题。它也可以在图书馆目录中找到。 – Andy 2011-06-13 12:14:28
有没有什么你必须做的共享库(.so)文件,使LD_LIBRARY_PATH看到他们? – Andy 2011-06-13 12:15:26