我已经通过apt-get安装了libboost-dev,并将其放在/usr/lib中。
/usr/lib$ ls | grep boost
libboost_filesystem.so.1.46.1
libboost_iostreams.so.1.46.1
libboost_serialization.so.1.46.1
libboost_system.so.1.46.1
libboost_thread.so.1.46.1
libboost_wserialization.so.1.46.1但是当我试图编译一个使用boost_thread的源代码时,我仍然得到了一个错误。
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -llibboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -lboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status安装和链接到libboost的正确方式是什么
发布于 2012-06-21 20:07:40
我注意到的一件事是你没有libboost_thread.so。您拥有版本化为1.46.1的文件,但通常库将创建一个指向具有未修饰名称的版本化副本的符号链接。可能不是这样,但这是我注意到的一件事。(这通常由安装程序完成。)- Omaha
我想这就是重点。这意味着我以错误的方式安装了libboost。实际上,我只安装了libboost-dev
sudo apt-get install libboost-dev 但我应该做的是:
sudo apt-get install libboost-dev libboost1.46-doc libboost-date-time1.46-dev ibboost-filesystem1.46-dev libboost-graph1.46-dev libboost-iostreams1.46-dev libboost-math1.46-dev libboost-program-options1.46-dev libboost-python1.46-dev libboost-random1.46-dev libboost-regex1.46-dev libboost-serialization1.46-dev libboost-signals1.46-dev libboost-system1.46-dev libboost-test1.46-dev libboost-thread1.46-dev libboost-wave1.46-dev(或者,在我的特殊情况下,至少安装libboost-system1.46-dev libboost-thread1.46-dev )
正确安装后,/usr/lib中应该有.a和.so。
/usr/lib$ ls | grep boost
libboost_date_time.a
libboost_date_time-mt.a
libboost_date_time-mt.so
libboost_date_time.so
libboost_date_time.so.1.46.1
libboost_filesystem.a
libboost_filesystem-mt.a
... and so on ...发布于 2017-05-19 02:02:42
在Ubuntu 16.04中,这个包被命名为: libboost-all-dev (而不是libboost-dev-all)
发布于 2015-02-13 01:40:14
评论框把这个建议的引用搞砸了,所以我把它作为一个答案发布,以获得正确的引用。
过去,Ubuntu有一个元软件包libboost-dev-all来安装所有这些。然而,我现在似乎找不到它了。这里有一个命令行可能会有帮助:
sudo apt-get install `apt-cache search libboost | \
grep -- -dev | \
grep -v '[12]\.[0-9]' | \
awk '{ print $1; }'`(摘自https://github.com/imvu-open/istatd/文件install-boost-dev.sh )
https://stackoverflow.com/questions/11137398
复制相似问题