7

我已经libboost-dev通过安装apt-get,它被放置在/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什么?

4

3 回答 3

11

我注意到的一件事是您确实没有 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至少安装)

一旦你正确安装它们,应该有.aand .soin /usr/lib

/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 ...
于 2012-06-21T12:07:40.450 回答
2

在 Ubuntu 16.04 中,包被命名为:libboost-all-dev(不是 libboost-dev-all)

于 2017-05-18T18:02:41.910 回答
1

评论框搞砸了这个建议的引用,所以我将其发布为获得正确引用的答案。

过去,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 )

于 2015-02-12T17:40:13.637 回答