[英]I installed libboost but can't link to it
我已经通过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
的正确方法是什么?
我注意到的一件事是你没有libboost_thread.so。 您具有版本化的1.46.1文件,但通常库将创建带有未修饰名称的版本化副本的符号链接。 那可能不是它,但这是我注意到的一件事。 (这通常由安装人员完成。) - 奥马哈
我认为这是重点。 这意味着我以错误的方式安装了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 ...
在Ubuntu 16.04中,该软件包的名称为:libboost-all-dev(不是libboost-dev-all)
评论框搞砸了这个建议的引用,所以我发布它作为得到正确引用的答案。
过去,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/ file install-boost-dev.sh)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.