使用 g++-8 编译时找不到 boost/asio/io_context.hpp
Cannot find boost/asio/io_context.hpp when compiling with g++-8
我在 Ubuntu 18.04 上,g++-8 编译器找不到 libboost-asio 模块。但是,我安装了 libboost
sudo apt-get install libboost-all-dev
每当我尝试使用以下标头进行编译时,请包括
#include <boost/asio/io_context.hpp>
我被抛出一个编译器错误,说找不到头文件。
fatal error: boost/asio/io_context.hpp: No such file or directory #include <boost/asio/io_context.hpp>
我能够使用其他提升标头进行编译,即 boost/array.hpp 但不能使用 asio。
在 libbooost 上运行版本检查
dpkg -s libboost-all-dev | grep 'Version'
返回 : 版本: 1.65.1.0ubuntu1
我也无法找到任何使用能力的痕迹。我怀疑它没有与 apt-get 命令一起安装。我应该如何处理?
更新 1
我发现 boost/asio 库安装在/usr/lib/boost/asio 下。然后我尝试使用以下命令进行编译,仍然得到相同的错误。
g++-8 -I/usr/include/boost/asio -o run foo.cpp
感谢有人向我指出io_context仅在 boost 1.66 之后可用,我现在能够在从官方来源构建 boost 1.66 后进行编译。
dpkg -l libboost-all-dev
标识 Ubuntu 18.04 上的版本 1.65.1("仿生"(。在 boost.org 网站中,此版本使用boost::asio::io_service.hpp
。
最小工作示例(timer1.cpp
(:
#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!" << std::endl;
return 0;
}
做完sudo apt install libboost-dev-all g++
后用g++ -Wall -pedantic -Wextra -g timer1.cpp -lboost_system -o timer1
编译。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- Seg Fault Issue C++ (file IO / getline)
- 提升 ASIO 无法识别计时器对象
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么在读取文件大小时文件IO速度会发生变化
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 缓慢提升ASIO
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- C++ Boost::asio串行通信与Arduino无法写入
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- ASIO signal_set多个 IO 线程不可靠,具体取决于代码顺序?
- ASIO IO完成回调订单与实际IO操作的顺序
- boost asio自定义分配器处理程序io服务编译后错误
- 如何为 Boost.Asio 设计自定义 IO 对象
- Boost asio:io服务在销毁步骤中被阻止了更多的处理程序问题
- 将System.IO.Ports.SerialPort代码转换为boost::asio
- boost::asio::io_service:在等待将来时将控制权返回到 IO 服务的运行