Windows和linux下编译boost程序库

一 .Windows下编译boost程序库

Boost库是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库

要使用Boost库,首先确认一下你使用的开发环境是否支持编译boost库( http://www.boost.org/users/history/version_1_46_1.html )
以windows的msvc编译器为例,支持编译boost库是Visual C++: 7.1, 8.0, 9.0 10.0
如果你还在用VC++ 6.0的话,只能抱歉了。VC6编译器由于不支持模板偏特化等许多新特性,所以有的Boost库会缺少功能甚至不能使用。
安装Boost库的方法:
1、从Boost网站( www.boost.org ) 下载 压缩包,解压到本地硬盘任意位置。
本文以boost_1_46_1版本为例,解压位置为 D:\boost_1_16_1\
2、进入目录D:\boost_1_16_1\,运行bootstrap.bat,获得bjam.exe 程序
3、命令行方式执行: bjam stage --toolset=msvc-7.1 --build-type=complete --layout=versioned
其中,
stage 选项指定boost使用本地构建,当前目录下会创建一个stage目录,编译后的lib库会在其中。
toolset 选项指定编译器,对于使用visual studio 开发工具的程序员来说,需要正确填写msvc的版本号:
 vs2003 : msvc-7.1
 vs2005 : msvc-8.0
 vs2008 : msvc-9.0
 vs2010 : msvc-10.0
build-type 选项指定编译类型,
layout 选项指定需要编译的库名及头文件的地址目录名的生成策略。默认Windows下为versioned
 
接下来你可以关上显示屏去做别的事了,因为Boost库的完整编译会耗费大量的时间(本人在pc上花了约1个小时时间)。
完整编译后,需要在visual studio IDE 中设置包含目录和库目录。
 
Windows Visual Studio 200x IDE 通用配置
=======================================
在菜单中选择:
1. Tools (工具)
2. Options (选项)
3. Project and Solutions (项目)
4. VC++ Directories (VC++ 目录)
5. Show directories for (显示以下内容的目录): Include Files (包含文件) 增加 D:\boost_1_46_1
6. Show directories for (显示以下内容的目录): Library Files (库文件) 增加 D:\boost_1_46_1\stage\lib
 
如果是Visual Studio 2010,不再是从tools->options->project and solutions->VC++ directories 中配置库目录和包含目录,而是对自己的项目单独配置。
先添加/导入自己的项目,在窗体左侧项目的属性管理器中
1.单击第一个按钮(属性),弹出项目属性页
2.选择配置属性->VC++目录
3.包含目录中增加 D:\boost_1_46_1
4.库目录中增加 D:\boost_1_46_1\stage\lib
 
OK,一切准备就绪。可以开始使用Boost库了。下面的一个小程序可以测试一下boost库是否安装正确。
#include <boost/thread/thread.hpp>
#include <iostream>
void hello() {
 std::cout << "Hello world, I'm a thread!" << std::endl;
}
int main(int argc, char* argv[]) {
 boost::thread thrd(&hello);
 thrd.join();
 return 0;
}
正确安装的话,会在控制台输出一行"Hello world, I'm a thread!"的信息。
完整编译Boost库费时费力,而且也不一定在开发中都用到,所以也可以自行选择要编译的库。

只要在运行bjam的命令中,添加--with-<库名> 选项就可以了,或--without-<库名>关闭某个库的编译。


二 .Linux ubuntu下编译安装boost

boost_1_43_0.tar.bz2
解压 tar -jxvf boost_1.43.0.tar.bz2
进入解压目录
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值