我安装了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
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译使用的源时,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
Run Code Online (Sandbox Code Playgroud)
什么是正确的安装和链接方式libboost?
Lai*_*uan 11
我注意到的一件事是你没有libboost_thread.so.您具有版本化的1.46.1文件,但通常库将创建带有未修饰名称的版本化副本的符号链接.那可能不是它,但这是我注意到的一件事.(这通常由安装人员完成.) - 奥马哈
我认为这是重点.这意味着我安装libboost错误的方式.实际上,我只安装了libboost-dev:
sudo apt-get install libboost-dev
Run Code Online (Sandbox Code Playgroud)
但我该怎么做:
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
Run Code Online (Sandbox Code Playgroud)
(或者,在我的特定情况下,libboost-system1.46-dev libboost-thread1.46-dev至少安装)
一旦你正确地安装它们,应该有.a和.so在/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 ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12888 次 |
| 最近记录: |