我正在编译一个在我的机器this project上运行的开源项目。它需要boost库,所以我在我的ubuntu机器上安装了Boost_1_55库,但编译过程没有通过打印出如下的错误消息而成功完成。
libtool: link: g++ -g -O3 -Wall -DKENLM_MAX_ORDER=6 -W -Wall -Wno-sign-compare -I./.. -pthread -I/usr/include -g -O2 -o .libs/query query_main.o ./.libs/libklm.so ../util/.libs/libklm_util.so -lz -L/usr/lib/x86_64-linux-gnu -lboost_program_options -lboost_thread -lboost_system -lpthread -lrt -pthread
../util/.libs/libklm_util.so: undefined reference to `boost::thread::join()'
../util/.libs/libklm_util.so: undefined reference to `boost::thread::~thread()'
./.libs/libklm.so: undefined reference to `boost::thread::start_thread()'
collect2: ld returned 1 exit status
This answer似乎是我问题的解决方案,但ls -al /usr/local/lib | grep thread
的结果向我显示如下。
libboost_thread.a
libboost_thread.so -> libboost_thread.so.1.55.0
libboost_thread.so.1.49.0
libboost_thread.so.1.55.0
我不知道还有什么要检查更多。提前感谢您的帮助。
答案 0 :(得分:0)
您可以尝试像这样将/usr/local/lib
添加到LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
答案 1 :(得分:0)
您有静态Boost库对象(libboost_thread.so),但是您是否安装了Boost开发文件?检查/ usr / include / boost / thread目录是否存在并且其中包含* .hpp文件。如果没有,您可能需要为您的发行版安装libboost-thread-dev软件包,或直接从Boost.org下载头文件。