使用boost.asio在Linux系统上编译mingw32可执行文件的问题

时间:2019-12-30 19:06:34

标签: c++ linux boost boost-asio asio

当我用代码编译Boost.asio程序时:

g++ -o main main.cpp -lboost_system -lboost_thread -pthread

它工作正常,但是如果我将其编译为linux系统上的Windows可执行文件,则代码如下:

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>

我的意思是我尝试了很多事情来解决它,这让我非常生气,您知道为什么吗?

1 个答案:

答案 0 :(得分:2)

对于Windows,您应该添加winsockets库作为编译参数。

g++ -o main.exe main.cpp -lboost_system -lboost_thread -pthread -lws2_32 -lwsock32

通常只有“ ws2_32”就足够了。

注意:Winsock2(ws2_32)是Winsock1(wsock32)的扩展。当前与wsock32兼容的程序在与ws2_32重新链接时仍可以正常工作。