g ++构建具有boost依赖项的c ++程序

Posted

技术标签:

【中文标题】g ++构建具有boost依赖项的c ++程序【英文标题】:g++ building c++ program with boost dependencies 【发布时间】:2018-08-22 19:45:12 【问题描述】:

我想在 windows 上用 g++ 编译和运行一个简单的 c++ websocket 应用程序。

Boost 是这样安装的:

./bootstrap.bat mingw
./b2.exe install --prefix=C:/boostLibs toolset=gcc

我的 c++ 包含如下所示:

#include <websocketpp/config/asio_no_tls.hpp>

#include <websocketpp/server.hpp>

#include <iostream>

此 websocket 示例由 https://github.com/zaphoyd/websocketpp 提供

为了构建项目,我发出以下命令:

g++ -Wno-deprecated -I ./cppServer/libs/ -I C:\boostLibs\include\boost-1_55 -L C:\boostLibs\lib -g ./cppServer/server.cpp -lboost_system

这导致我出现此错误消息:

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe:找不到-lboost_system collect2.exe:错误:ld 返回 1 个退出状态

如果我尝试在没有 -lboost_system 的情况下进行构建,我会收到一个很长的异常,从以下开始:

C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:222: 未定义引用boost::system::generic_category()' C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:223: undefined reference toboost::system::generic_category()' C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:224: 未定义引用boost::system::system_category()' C:\Users\JOHANN~1.HAS\AppData\Local\Temp\ccpKMWTH.o: In functionZN5boost6system10error_codeC1Ev': C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:323: 未定义引用boost::system::system_category()' C:\Users\JOHANN~1.HAS\AppData\Local\Temp\ccpKMWTH.o: In functionZN5boost6system4errc20make_error_conditionENS1_6errc_tE': C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:488: 未定义引用boost::system::generic_category()' C:\Users\JOHANN~1.HAS\AppData\Local\Temp\ccpKMWTH.o: In functionZN5boost16thread_exceptionC2EiPKc'

那么我错过了什么?我现在想不通。

【问题讨论】:

C:\boostLibs\lib的内容是什么? 正好 60 个以 .a 结尾的文件。像 libboost_system-mgw63-mt-1_55.a. 【参考方案1】:

链接到boost_system-lboost_system-mgw63-mt-1_55,因为这就是这些文件的名称。详情请见boost library naming。

在构建 boost 时,您可能希望将 --layout=system 指定为 b2.exe,以便您的文件在文件名中没有 -mgw63-mt-1_55,然后在链接时只需使用 -lboost_system

【讨论】:

好的,这有点帮助。现在有很多错误,例如: C:/boostLibs/include/boost-1_55/boost/asio/detail/impl/socket_ops.ipp:82: undefined reference to `WSAGetLastError@0' @johni07 您需要链接到 Microsoft 库:msdn.microsoft.com/en-us/library/windows/desktop/… 好的,现在错误少了。怎么知道 ms 库丢失了? @johni07 您使用互联网搜索引擎 - 只需 google 函数名称并阅读文档。

以上是关于g ++构建具有boost依赖项的c ++程序的主要内容,如果未能解决你的问题,请参考以下文章

具有依赖项的 registerModule

从CRAN镜像安装具有依赖关系的本地R包

Flutter 平台特定依赖项

GNU makefile 规则和依赖项

使用发布 CRT 在调试中构建应用程序,但在 boost 上存在依赖问题

如何构建具有 cmake 文件的 c++/c 项目?