支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 编程入门> c、c++基础> [转]Linux(Ubuntu)下编译安装boost
 
 
 
 
类别:其他 阅读:6744 评论:0 时间:三月 19, 2012, 6:27 a.m. 关键字:

 

来源:http://blog.ehomy.net/archives/148


最近想把公司的项目在Linux全部编译一次,期间用到了boost库,于是不得不在Linux环境下先编译安装boost。
查看了些官方文档和网上资料,总觉得有些细节没有提到,故此,结合自己的安装过程,重新总结了下,以作备忘。

工作平台:Ubuntu

获取boost库

Linux下官方提供了两个压缩版本:
boost_1_43_0.tar.bz2
boost_1_43_0.tar.gz

windows平台有:
boost_1_43_0.7z
boost_1_43_0.zip

找到其中一个Unix/Linux包的直接下载地址,然后输入下列命令
sudo wget http://downloads.sourceforge.net/project/boost/boost/1.43.0/boost_1_43_0.tar.gz?use_mirror=cdnetworks-kr-1

解压
tar -zxvf boost_1.43.0.tar.gz

进入解压目录
cd boost_1_43_0

编译安装

使用下面的命令创建boost自己的编译工具bjam(目的是保证Boost在任何平台上都能用bjam编译),类似于GNU Make。
./bootstrap.sh

建议先查看下帮助文档,了解些默认选项,命令为
./bjam –help

常用选项(Options)和属性(Properties)的说明,一般带有–前缀的关键词为option,没有的则为property。

–show-libraries
显示需要编译才能使用的库列表

–build-type=minimal|complete
–build-type=minimal为默认值,此时在Linux下只编译生成release版的动态链接C运行库(C++标准库)的多线程静态库和动态库。
–build-type=complete,在Unix/linux下要编译多个变体(debug或release,多线程或单线程,静态库或动态库,静态链接或动态链接C运行库/C++标准库)。不建议全部编译,费时还费空间,提倡按需编译。

–layout=versioned|tagged|system
决定需要编译的库名及头文件的地址目录名的生成策略。默认Windows下–layout=versioned,Linux下–layout=system。
当同时编译多个版本时,最好设置–layout=versioned或–layout=tagged,否则编译多半会失败,原因是有的版本同时编译若不指定命名策略,可能在输出到指定目录的时候造成命名冲突。
注:–build-type=complete时,不需要设置此属性。但指定variant=debug,release等属性时,须确保–layout=versioned或–layout=tagged。

–build-dir=DIR
指定存放编译过程中生成的中间文件,目标文件等其他文件的目录,默认在./bin.v2。

–with-
创建和安装指定的库
–without-
不对指定的库进行创建和安装,默认创建所有的库

安装:关键词 install 或 stage
./bjam install
install会安装头文件和库文件到相应指定目录,头文件安装到/usr/local/include下,库文件安装到/usr/local/lib下。具体指定安装目录见./bjam –help。
./bjam stage
stage说起来只能说是收集生成的库文件到一个目录下,通常默认就在./stage下。

注:
install 和 stage 貌似不能同时使用,中间会卡住。
若编译过程中未指定install或stage,则生成的目标库文件只存在于–build-dir所指的目录中,默认为./bin.v2。考虑到此,若无需将头文件和库文件安装,则推荐使用stage关键字。

下面是属性:
toolset=toolset
指定编译器,默认自动检测,安装了多个编译器的时候可以使用此属性。
variant=debug|release
指定编译debug或release版本。
link=static|shared
指定创建静态库或动态库
runtime-link=static|shared
指定创建的库是静态链接还是动态链接到C运行库(或C++标准库),这个选项需依据–link的类型,不同的编译器允许的链接策略不一样,比如在GCC下,在生成动态库(–link=shared)时,就不允许进行静态链接到C运行库(或C++标准库)。
threading=single|multi
指定创建多线程或单线程的版本库。

属性可同时设置,如下两种方式,为了避免名字冲突,建议采取propery=value的格式:
./bjam variant=debug,release stage

./bjam variant=debug variant=release
这两种方式都可以。

最后执行的创建命令:
sudo ./bjam –without-python –layout=tagged variant=debug,release link=static,shared runtime-link=shared threading=multi stage

[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment