【发布时间】:2020-04-19 11:43:15
【问题描述】:
当我用代码编译一个 Boost.asio 程序时:
g++ -o main main.cpp -lboost_system -lboost_thread -pthread
它工作得很好,但是如果我在 linux 系统上将它编译为带有代码的可执行文件:
x86_64-w64-mingw32-g++ -I /usr/include/boost -o main.exe main.cpp -lboost_system -lboost_thread -pthread
或
x86_64-w64-mingw32-g++ -o main.exe main.cpp -lboost_system -lboost_thread -pthread
有一个编译错误
fatal error: boost/asio/io_service.hpp: No such file or directory
#include <boost/asio/io_service.hpp>
我的意思是我尝试了很多方法来解决它,这让我很生气,你知道为什么吗?
【问题讨论】:
-
mingw 发行版是否也包含 Boost? g++ 是否可以找到标头,它需要适当配置和编译的 Boost。
-
是否在
/usr/include/boost中安装了boost 并带有boost 子目录?通常你会在命令行中添加/usr/include(虽然这通常会由 GCC 自动添加) -
但我使用 mingw 为 windows 编译,在 g++ / gcc 上它工作正常
-
要将 mingw 编译的对象链接到 Boost 库,mingw 需要一个已经为 mingw 配置和编译的 Boost。 Linux 库(甚至可能是头文件)将不起作用。它们将针对 Linux 而不是 Windows 系统进行配置,并由系统的常规 g++ 编译器编译。如果您为 mingw 配置了 Boost 库并使用 mingw、groovy 进行编译,但 mingw 编译器似乎找不到它。如果你正确指向 linux 版本,Mingw 应该仍然能够找到 header,即使它不能使用它。
标签: c++ linux boost boost-asio