1
northisland 2019-12-14 11:59:38 +08:00
很久没手动安装了,我是 sudo apt install libboost1.58-all-dev
|
2
northisland 2019-12-14 12:04:17 +08:00
你用的是智能指针,应该包含<boost/shared_ptr.hpp>
另外今年是 2019 年,你可以用用<memory>里的 std::shared_ptr |
3
FrankHB 2019-12-14 15:00:13 +08:00
g++ 哪有包的概念。强行要包也得 pkg-config 好吧。
这种情况不是先 -v 自己看搜索路径么。 |
4
nightwitch 2019-12-14 15:19:06 +08:00
从代码上来看,boost::shared_ptr 需要的头文件你没有包含进去
其次,你如果用 g++编译,至少上个 g++的编译参数上来才能让人帮你诊断问题吧 |
5
gramyang OP 按照楼上大哥的建议:环境 ubuntu18,用 apt install libboost-all-dev 安装了 boost。路径在 /usr/include/boost,里面感觉也不分头文件和库文件,都混在一起。
测试程序: #include <iostream> #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time.hpp> 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 求大佬。。。 |
6
gramyang OP @nightwitch 求大佬帮忙,新的代码在楼中
|
7
gramyang OP @northisland 按照大佬的建议,重新安装了 boost,但是还是有问题,求帮助!
|
8
lcdtyph 2019-12-14 19:58:51 +08:00
asio 需要 -lboost_system ……
|
9
lcdtyph 2019-12-14 20:00:03 +08:00
准确得说 asio 本身是 header only 的,但是它引用了 boost::system 的一些东西,而 boost::system 默认不是 header only 的,所以链接的时候需要加上 -lboost_system
|
11
gramyang OP @lcdtyph 再请教一下,在 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 和上面是一样的代码。。。 |
14
nightwitch 2019-12-14 23:18:50 +08:00
include_directories 这种方式已经是 cmake 不推荐使用的方式了
建议学一下怎么用 find_package 模式来链接 boost |