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,如需转载请自行联系原作者

相关文章
|
6月前
|
C语言 C++
boost库asio编译及配置
boost库asio编译及配置
258 0
|
2月前
|
C语言
BOOST1.75+QT5.15.2编译记录
本文记录了BOOST 1.75与Qt 5.15.2编译过程的详细步骤,包括编译结果截图、将boost源码编译为静态库的步骤,以及如何在Qt项目中使用BOOST库的测试代码。文章还提供了相关参考链接,以帮助解决在编译和使用过程中可能遇到的问题。
BOOST1.75+QT5.15.2编译记录
|
6月前
|
C++ Python
【boost】boost1.71安装以及VS2019调用boost.Python
【boost】boost1.71安装以及VS2019调用boost.Python
Boost(MSVC编译)+使用信号槽
天天看QT的信号槽,突然发现boost中也有信号槽,所以想试试boost的信号槽,尝试一下。需要先对boost进行编译,之后我会使用信号槽作为演示代码。
136 0
|
C语言
boost使用log库编译报错
使用boost的log,用以下链接选项: -lboost_system -lboost_thread -lboost_log -lboost_log_setup -lboost_filesystem -lpthread 当...
1692 0
VS2015编译Boost1.64
一、下载并解压:boost1.64.0:http://www.boost.org/users/history/version_1_64_0.html 二、以管理员权限运行VS2015命令行工具   三、cd到boost解压目录   四、运行bootstrap.
1355 0
|
Ubuntu Shell Android开发
boost全平台编译方法
1.通用规则 多数库是不需要预先编译的,include hpp文件就能用。如果出现链接失败,那就是可能需要编译库了。
3164 0