Почему "undefined ссылка на` boost:: system:: generic_category", даже если я связываюсь с boost_system - программирование
Подтвердить что ты не робот

Почему "undefined ссылка на` boost:: system:: generic_category", даже если я связываюсь с boost_system

Я бы понял это сообщение об ошибке, если бы я не поставил флаг -lboost_system, но он действительно здесь:

g++ -o build/myproject build/main/main.o -L/usr/local/boost/boost_1_52_0/boost/libs -L/usr/lib -Lbuild -L. -lboost_system -lboost_thread -lpthread -lboost_regex -lpq -lmylibrary
build/libmylibrary.a(library.o): In function `__static_initialization_and_destruction_0(int, int)':
library.cpp:(.text+0x25f): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x269): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x273): undefined reference to `boost::system::system_category()'

Есть ли у вас какие-либо идеи, что мне следует исследовать для решения проблемы? (Я использую gcc 4.6.3)

4b9b3361

Ответ 1

Порядок, в котором вы связываете свои библиотеки, в вашем случае имеет library.cpp, который, по-видимому, использует библиотеку boost_system

library.cpp:(.text+0x25f): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x269): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x273): undefined reference to `boost::system::system_category()'

Чтобы решить эту проблему, вы должны переместить библиотеку boost_system в конец вашей линии ссылок

g++ -o build/myproject build/main/main.o -L/usr/local/boost/boost_1_52_0/boost/libs -L/usr/lib -Lbuild -L. -lboost_thread -lpthread -lboost_regex -lpq -lmylibrary **-lboost_system** 

В качестве альтернативы, создайте libmylibrary.so как общую библиотеку и напрямую свяжите ее с библиотекой boost_system.