G++ 构建具有提升依赖项的 C++ 程序

g++ building c++ program with boost dependencies

本文关键字:C++ 程序 依赖 构建 G++      更新时间:2023-10-16

我想在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:boostLibsincludeboost-1_55 -L C:boostLibslib -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:UsersJOHANN~1.HASAppDataLocalTempccpKMWTH.o: In functionZN5boost6system10error_codeC1Ev'的未定义引用: C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:323:未定义对boost::system::system_category()' C:UsersJOHANN~1.HASAppDataLocalTempccpKMWTH.o: In functionZN5boost6system4errc20make_error_conditionENS1_6errc_tE'的引用: C:/boostLibs/include/boost-1_55/boost/system/error_code.hpp:488:对boost::system::generic_category()' C:UsersJOHANN~1.HASAppDataLocalTempccpKMWTH.o: In functionZN5boost16thread_exceptionC2EiPKc的未定义引用

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

链接到boost_system作为-lboost_system-mgw63-mt-1_55,因为这就是这些文件的称呼。有关更多详细信息,请参阅提升库命名。

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