开发环境问题
Posted hbright
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发环境问题相关的知识,希望对你有一定的参考价值。
1.问题单:在使用boost线程库时遇见各种报错信息。
系统: ubuntu desktop v16.04 boost: v1.67 IDE: Qtcreator v4.5.2
使用测试代码如下:
#include <iostream> #include<boost/thread/thread.hpp> #include<boost/thread/mutex.hpp> boost::mutex io_mutex; struct count { count(int id):id(id) {} void operator()() { for(int i = 0; i < 60; ++i) { boost::mutex::scoped_lock lock(io_mutex); std::cout << id << ": " << i << std::endl; sleep(1); } } int id; }; int main() { boost::thread thrd1(count(1)); boost::thread thrd2(count(2)); thrd1.join(); thrd2.join(); system("pause"); return 0; }
使用Qt Creator自动进行编译,有许多错误信息,取第一行如下:
/usr/local/boost/include/boost/system/error_code.hpp:703: error: undefined reference to `boost::system::generic_category()‘
经过google,需要添加boost_system,首先确认自己boost lib的安装位置,在qt的工程文件pro中添加此项:
LIBS = -L/usr/local/lib -lboost_system
再次编译,新的错误出现:
/lib/x86_64-linux-gnu/libpthread.so.0:-1: error: error adding symbols: DSO missing from command line
提示缺失线程库,继续google,增加boost_thread库
LIBS = -L/usr/local/lib -lboost_system -lboost_thread
出现错误如下:
/lib/x86_64-linux-gnu/libpthread.so.0:-1: error: error adding symbols: DSO missing from command line
发现与上一个错误信息一样,感觉没有起作用,去掉后想加上以前的标志lpthread试试:
LIBS = -L/usr/local/lib -lboost_system -lpthread
结果报错如下:
/usr/local/boost/include/boost/thread/pthread/thread_data.hpp:155: error: undefined reference to `vtable for boost::detail::thread_data_base‘
网上说要加上boost_thread库,于是不得已,又加上它,变成:
LIBS = -L/usr/local/lib -lboost_system -lboost_thread -lpthread
最后终于成功运行,boost_thread与pthread都不能省~,一个小小的库加载来来回回找了许久才解决,打个标记。
以上是关于开发环境问题的主要内容,如果未能解决你的问题,请参考以下文章