g++;未定义对“boost::system::system_category()';

g++;未定义对“boost::system::system_category()';,boost,linker,compiler-errors,g++,Boost,Linker,Compiler Errors,G++,我到处寻找这个问题的答案。我使用的是Boost1.48,程序非常简单,因为为了解决这个问题,我将它分解为最简单的形式 #include <boost/filesystem.hpp> int main(int argc, char **argv) { return 0; } 链接期间错误的完整列表如下所示: g++ -m32 -Wall -o mapnik-test -L/usr/lib -I/usr/include -I/usr/include/freetype2 -lp

我到处寻找这个问题的答案。我使用的是Boost1.48,程序非常简单,因为为了解决这个问题,我将它分解为最简单的形式

#include <boost/filesystem.hpp>

int main(int argc, char **argv) {
    return 0;
}
链接期间错误的完整列表如下所示:

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_系统库。从g++命令行可以看到,我已经指定了这个。我甚至尝试过显式链接libboost_系统。一个库也没有用。我是唯一一个对此抱怨的人吗?

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

试一试

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

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