2012-06-28 14 views
16

Ich habe High und Low für die Antwort auf dieses Problem gesucht. Ich benutze Boost 1.48 und das Programm ist extrem einfach, da ich es auf seine einfachste Form heruntergebrochen habe, um dieses Problem zu lösen.g ++ undefinierter Verweis auf `boost :: system :: system_category() '

#include <boost/filesystem.hpp> 

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

Die g ++ von meinem Makefile ausgeführt Befehl lautet wie folgt:

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

Die vollständige Liste der Fehler bei der Verknüpfung wird wie folgt:

/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 

Ich habe leiden viele Menschen gefunden von Das gleiche Problem, aber in den meisten Fällen bestand die Lösung darin, die Bibliothek boost_system im LDFLAGS bereitzustellen. Wie Sie in der g ++ - Befehlszeile sehen können, habe ich dies bereits angegeben. Ich habe sogar versucht, die Bibliothek libboost_system.a ohne Erfolg zu verlinken. Bin ich die einzige Person mit dieser Beschwerde?

Antwort

27

Legen Sie die Quelldatei am Anfang der Befehlszeile ab.

Versuchen

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

Die Bibliotheken sollten erst nach der Quelldatei angegeben werden, damit der Linker der undefinierten Referenzen in der Quelldatei auflösen kann.

Verwandte Themen