Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

g++ undefined reference to `boost::system::system_category()'

I have searched high and low for answer to this issue. I am using boost 1.48 and the program is extremely simple, since I have broken it down to its simplest form in order to solve this issue.

#include <boost/filesystem.hpp>

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

The g++ command executed from my Makefile is as follows:

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

The complete list of errors during linking is as follows:

/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

I have found many people suffering from the same issue, but in most cases, the solution has been to provide the boost_system library in the LDFLAGS. As you can see from the g++ command line, I already have this specified. I have even tried explicitly linking against the libboost_system.a library to no avail. Am I the only person with this complaint?

like image 391
Craig Avatar asked Jun 28 '12 17:06

Craig


1 Answers

Put the source file at the beginning of the command line.

Try

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

The libraries should be specified only after the source file so that the linker can resolve the undefined references in the source file.

like image 145
panickal Avatar answered Nov 02 '22 11:11

panickal