ubuntu 安装 boost 遇到的坑
- 0次
- 2021-06-18 22:27:12
- idczone
手动 wget 下载 boost,解压后编译成功后,用./b2 install --prefix=/usr 进行安装,安装后 ldconfig 更新动态库链接。
到这里都没问题,但是在写了一个测试程序:
#include
#include
int main(){
boost::shared_ptr myPtr(new int(1));
std::cout<<*myPtr;
return 0;
}
后,g++编译时提示找不到包。。。换了别的程序也是这样。。。。这我就很迷茫了,boost 库文件在 /usr/lib 下面,boost 头文件在 /usr/include/boost 里面都能找得到。。
为什么不用 apt-get ?因为 apt-get 死活找不到 boost 的头文件和库文件。。
求大佬指点!
很久没手动安装了,我是 sudo apt install libboost1.58-all-dev
你用的是智能指针,应该包含
另外今年是 2019 年,你可以用用里的 std::shared_ptr
g++ 哪有包的概念。强行要包也得 pkg-config 好吧。
这种情况不是先 -v 自己看搜索路径么。
从代码上来看,boost::shared_ptr 需要的头文件你没有包含进去
其次,你如果用 g++编译,至少上个 g++的编译参数上来才能让人帮你诊断问题吧
按照楼上大哥的建议:环境 ubuntu18,用 apt install libboost-all-dev 安装了 boost。路径在 /usr/include/boost,里面感觉也不分头文件和库文件,都混在一起。
测试程序:
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "Hello, world!\n";
return 0;
}
编译命令:g++ t.cpp -lboost_asio -lboost_date_time -o t
结果报错:/usr/bin/ld: cannot find -lboost_asio
求大佬。。。
求大佬帮忙,新的代码在楼中
按照大佬的建议,重新安装了 boost,但是还是有问题,求帮助!
asio 需要 -lboost_system ……
准确得说 asio 本身是 header only 的,但是它引用了 boost::system 的一些东西,而 boost::system 默认不是 header only 的,所以链接的时候需要加上 -lboost_system
牛批!!!可以了!!
再请教一下,在 clion 上远程连接 ubuntu,但是运行失败,cmake:
cmake_minimum_required(VERSION 3.1)
project(Ctest)
include_directories(/usr/include/boost)
link_directories(/usr/include/boost)
add_executable(D test/test.cpp)
target_link_libraries(D boost_system boost_date_time)
这个 test.cpp 和上面是一样的代码。。。
报错呢…
额,搞定了,把 boost_date_time 换到 boost_system 前面就可以了
include_directories 这种方式已经是 cmake 不推荐使用的方式了
建议学一下怎么用 find_package 模式来链接 boost