使用 g++-8 编译时找不到 boost/asio/io_context.hpp

Cannot find boost/asio/io_context.hpp when compiling with g++-8

本文关键字:asio io context hpp boost g++-8 编译 找不到 使用      更新时间:2023-10-16

我在 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编译。