Mingw和Boost::Log:构建琐碎的示例失败

Mingw and Boost::Log: Building trivial example fails

本文关键字:失败 构建 Boost Log Mingw      更新时间:2023-10-16

我已经从http://nuwen.net/mingw.html并尝试从Boost::Log文档中构建这个琐碎的示例。这会导致以下(链接器?)错误:

C:log>g++ -lboost_log main.cpp -o logtest.exe
C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o:main.cpp:(.text+0x42): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o:main.cpp:(.text+0x5e): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o:main.cpp:(.text+0xe8): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o:main.cpp:(.text+0x105): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o:main.cpp:(.text+0x18f): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o:main.cpp:(.text+0x1ac): more undefined references to `boost::log::v2s_mt_nt5::trivial::logger::get()' follow
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bin/ld.exe: C:UsersMyUserNameAppDataLocalTempcc5rtLIQ.o: bad reloc address 0x148 in section `.rdata'
collect2.exe: error: ld returned 1 exit status

g++的版本是4.8.1。

我还尝试过使用自定义的build-boost库来构建这个示例,包括使用Mingwbuilds中的mingw编译器和mingw-get安装程序。mingw构建的一个显示相同的错误消息,来自mingw-get的版本甚至无法构建Boost::Log。

如何让日志库与mingw一起工作?

您需要修复您的命令行:

g++ main.cpp -lboost_log -o logtest.exe

参数将按照指定的顺序进行处理,并且只有在遇到库时才从库中解析符号。

我只能使用以下命令行在gcc(linux)中编译boost日志的琐碎示例:

g++ -o main main.cpp -DBOOST_LOG_DYN_LINK -lboost_log -lpthread