2013-03-07 17 views
14

tôi sẽ hiểu thông báo lỗi này nếu tôi không đặt -lboost_system cờ, nhưng nó thực sự là ở đây:tại sao "tài liệu tham khảo không xác định để tăng :: hệ thống ':: generic_category" ngay cả khi tôi làm liên kết chống lại 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_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()' 

Bạn có bất kỳ ý tưởng nào tôi nên điều tra để giải quyết vấn đề không? (Tôi sử dụng gcc 4.6.3)

+9

thử đặt nó ở cuối. –

+1

nooo!? ** hoạt động! ! ! ** bạn có biết tại sao không? –

+3

Nó được giải thích trong phần thứ hai của [câu trả lời này] (http://stackoverflow.com/a/492498/1252091). –

Trả lời

21

Trình tự mà bạn liên kết các thư viện các vấn đề của bạn, trong trường hợp của bạn, bạn có library.cpp rằng dường như sử dụng các thư viện 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()' 

Để giải quyết điều này, bạn nên di chuyển các thư viện boost_system đến cuối đường liên kết của bạn

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** 

Ngoài ra, xây dựng libmylibrary.so như một thư viện chia sẻ và liên kết đến các thư viện boost_system trực tiếp.

+4

Đã cứu mạng tôi hôm nay! – alex88

+0

Đã cứu hai mạng sống! (ít nhất) –

Các vấn đề liên quan