【问题标题】:Cannot find boost/asio/io_context.hpp when compiling with g++-8使用 g++-8 编译时找不到 boost/asio/io_context.hpp
【发布时间】:2019-04-02 09:12:20
【问题描述】:

我在 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 头文件进行编译,例如 boost/array.hpp,但不能使用 asio。

在 libbooost 上运行版本检查

dpkg -s libboost-all-dev | grep 'Version'

返回:版本:1.65.1.0ubuntu1

我也找不到任何使用 aptitude 的 asio 痕迹。我怀疑它没有与 apt-get 命令一起安装。我应该如何处理?

更新 1

我发现 boost/asio 库安装在 /usr/lib/boost/asio 下。 然后我尝试了以下命令进行编译,仍然得到同样的错误。

g++-8 -I/usr/include/boost/asio -o run foo.cpp

【问题讨论】:

  • 检查 boost 包含目录是否包含在你的路径中,否则将它与 ``-I` 一起传递给你的编译器。
  • 我看到 boost/asio 库安装在 /usr/include/boost/asio,但即使使用 -I/usr/include/boost/asio 我仍然得到同样的错误。我错过了什么吗?
  • 我认为你必须包含 boost 根目录,即-I/usr/include/boost

标签: c++ ubuntu boost ubuntu-18.04


【解决方案1】:

感谢有人向我指出 io_context 仅在 boost 1.66 之后可用,我现在可以在从官方来源构建 boost 1.66 后进行编译。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多