码迷,mamicode.com
首页 > 其他好文 > 详细

开发环境问题

时间:2018-06-23 13:16:59      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:error:   提示   报错信息   运行   ubuntu   环境   hrd   ret   系统   

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都不能省~,一个小小的库加载来来回回找了许久才解决,打个标记。

 

 

     

开发环境问题

标签:error:   提示   报错信息   运行   ubuntu   环境   hrd   ret   系统   

原文地址:https://www.cnblogs.com/hbright/p/9216711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!