【问题标题】:g++ undefined reference to `boost::system::system_category()'g ++未定义对`boost::system::system_category()'的引用
【发布时间】:2012-06-30 07:09:02
【问题描述】:

我已经从高处和低处搜索了这个问题的答案。我使用的是 boost 1.48,程序非常简单,因为我已将其分解为最简单的形式以解决此问题。

#include <boost/filesystem.hpp>

int main(int argc, char **argv) {
    return 0;
}

从我的 Makefile 中执行的 g++ 命令如下:

g++ -m32 -Wall -o mapnik-test -L/usr/lib -I/usr/include -I/usr/include/freetype2 -lpthread -lboost_system mapnik-test.cpp

链接过程中的完整错误列表如下:

/tmp/ccIbmuee.o: In function `__static_initialization_and_destruction_0(int, int)':
mapnik-test.cpp:(.text+0x49): undefined reference to `boost::system::generic_category()'
mapnik-test.cpp:(.text+0x53): undefined reference to `boost::system::generic_category()'
mapnik-test.cpp:(.text+0x5d): undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [mapnik-test] Error 1

我发现很多人都遇到了同样的问题,但在大多数情况下,解决方案是在 LDFLAGS 中提供 boost_system 库。从 g++ 命令行中可以看到,我已经指定了这个。我什至尝试显式链接 libboost_system.a 库,但无济于事。我是唯一有此投诉的人吗?

【问题讨论】:

    标签: boost linker compiler-errors g++


    【解决方案1】:

    将源文件放在命令行开头。

    试试

    g++ -m32 -Wall mapnik-test.cpp -o mapnik-test -L/usr/lib -I/usr/include -I/usr/include/freetype2 -lpthread -lboost_system
    

    应仅在源文件之后指定库,以便链接器可以解析源文件中未定义的引用。

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 2017-02-25
      • 2013-10-19
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 2019-07-05
      • 2016-05-26
      • 2012-11-08
      相关资源
      最近更新 更多