Boost 编译及boost::thread静态链接使用

简介:

1)源码下载

由于项目需要,准备移植到Android平台上,所以下载了1.49版本boost库,鉴于浏览器速度缓慢,

建议获取到下载链接,使用迅雷下载,服务器上有缓存的!!

下载链接如下:

http://nbtelecom.dl.sourceforge.net/project/boost/boost/1.49.0/boost_1_49_0.tar.bz2


2)编译

解压省略,静态编译,无需安装

#cd boost_1_49_0

#./bootstrap.sh     (后面添加--prefix=dir可以指定安装的目录,默认安装到/usr/local)

#./b2 (后面添加install将库安装到系统目录下)



3)测试代码:

#include <boost/thread.hpp>

#include <iostream>


void task1() { 

    // do stuff

    std::cout << "This is task1!" << std::endl;

}


void task2() { 

    // do stuff

    std::cout << "This is task2!" << std::endl;

}


int main (int argc, char ** argv) {

    using namespace boost; 

    thread thread_1 = thread(task1);

    thread thread_2 = thread(task2);


    // do other stuff

    thread_2.join();

    thread_1.join();

    return 0;

}



4)编译


动态链接:


使用安装目录:

g++ test.cpp -I /usr/local/include/boost/ -L  /usr/local/lib/ -lboost_thread  -o example


使用原有的生成目录

g++ test.cpp -I /home/boost/boost_1_49_0/boost -L /home/boost/boost_1_49_0/stage/lib/ -lboost_thread -o example


静态链接:


使用安装目录:

g++ test.cpp -I /usr/local/include/boost/ /usr/local/lib/libboost_thread.a -lpthread -o example



使用已有的目录:

g++ test.cpp -I /home/boost/boost_1_49_0/boost  /home/boost/boost_1_49_0/stage/lib/libboost_thread.a -lpthread  -o example



注意作为静态编译必须指定-lpthread,原因在于libboost_thread.so静态库在进行静态链接的时候必须指定POSIX线程库,否则无法找到pthread函数库的函数实现,就会出现函数调用的未定义异常,简单截取

其中的错误如下:

undefined reference to `pthread_setspecific'

undefined reference to `pthread_key_create'



参考:

http://blog.csdn.net/lixinneo/article/details/7679996






     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1394733,如需转载请自行联系原作者

相关文章
|
3月前
|
C语言 C++
boost库asio编译及配置
boost库asio编译及配置
111 0
|
17天前
|
C++ Python
【boost】boost1.71安装以及VS2019调用boost.Python
【boost】boost1.71安装以及VS2019调用boost.Python
|
8月前
Boost(MSVC编译)+使用信号槽
天天看QT的信号槽,突然发现boost中也有信号槽,所以想试试boost的信号槽,尝试一下。需要先对boost进行编译,之后我会使用信号槽作为演示代码。
88 0
|
C语言
boost使用log库编译报错
使用boost的log,用以下链接选项: -lboost_system -lboost_thread -lboost_log -lboost_log_setup -lboost_filesystem -lpthread 当...
1640 0
VS2015编译Boost1.64
一、下载并解压:boost1.64.0:http://www.boost.org/users/history/version_1_64_0.html 二、以管理员权限运行VS2015命令行工具   三、cd到boost解压目录   四、运行bootstrap.
1323 0