如何编译boost linux

如何编译boost linux,第1张

linux平台下要编译安装除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装:

#yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel -y

然后是去官网下载源码包,按照如下步骤:

#tar xvzf boost_1_50_0.tar.gz

进入boost_1_50_0目录:

#cd boost_1_50_0

然后是编译安装,boost源码包中有配置脚本,直接用就可以:

#sh ./bootstrap.sh

Building Boost.Build engine with toolset gcc... tools/build/v2/engine/bin.linuxx86_64/b2

Detecting Python version... 2.6

Detecting Python root... /usr

Unicode/ICU support for Boost.Regex?... not found.

Generating Boost.Build configuration in project-config.jam...

Bootstrapping is done. To build, run:

./b2

To adjust configuration, edit 'project-config.jam'.

Further information:

- Command line help:

./b2 --help

- Getting started guide:

http://www.boost.org/more/getting_started/unix-variants.html

- Boost.Build documentation:

http://www.boost.org/boost-build2/doc/html/index.html

接下来就是编译,重点关注是否编译成功:

#./b2

首先把Boost库的头文件存放到/usr/include/boost/路径下,再把Lib文件存放到/usr/local/lib/boost/路径下。修改/etc/profile文件,在此文件中增加如下2个环境变量:

BOOST_INCLUDE=/usr/include/boost

export BOOST_INCLUDE

BOOST_LIB=/usr/local/lib/boost

export BOOST_LIB

写一个如下所示的cpp文件。

//samlpe.cpp

#include <iostream>

#include <string>

#include <boost/thread.hpp>

using namespace std

void threadRoutine(void)

{

boost::xtime time

time.nsec = 0

time.sec = 20

cout <<"线程函数做一些事情" <<endl

boost::thread::sleep(time)

}

int main(void)

{

string str

cout <<"输入任意字符开始创建一个线程..." <<endl

cin >>str

boost::thread t(&threadRoutine)

t.join()

cout <<"输入任意字符结束运行..." <<endl

cin >>str

return 0

}

保存。使用g++编译,命令如下所示:

g++ -o samlpe.out samlpe.cpp -I$BOOST_INCLUDE -L$BOOST_LIB -lboost_thread-gcc-mt

其中-I参数指定Boost头文件路径,-L参数指定Boost库文件路径,-l参数指定使用线程库名。在我使用的这个版本Boost里,到/usr/local/lib/boost路径下,可以看到有关Boost线程库文件,比如:libboost_thread-gcc-mt.a等。注意在用-l参数指定库名时把磁盘文件名前面那个lib前缀去掉就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7482719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存