- 浏览: 16990 次
最新评论
编译Boost 1.38
- 博客分类:
- 技术杂绘
编译Boost 1.38
2010年10月28日
首先,我们到http://www.boost.org去下载 boost1.38的代码包。得到一个压缩包boost_1_38_0.zip,你也可以选择下载其它格式的。
然后我们把它解压出来,我把它解压在D盘根目录下面:
首先,我们需要到bjam.exe这是一个用于编译的工具。
接下来我将会在Visual Studio 2008 SP1简体中文专业版中编译Boost1.38。我们去开始菜单,使用管理员身份运行Visual Studio 2008 命令提示(非Vista请无视):
然后我们通过cd等DOS指令进入到:
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
C:\Windows\system32>d:
D:\>cd boost_1_38_0
D:\boost_1_38_0>cd tools
D:\boost_1_38_0\tools>cd jam
D:\boost_1_38_0\tools\jam>cd src
D:\boost_1_38_0\tools\jam\src>
然后我们在这个src目录下面执行build.bat:
D:\boost_1_38_0\tools\jam\src>build.bat
然后我们稍等一小会儿等待系统自动为我们生成编译工具。
生成完毕之后src目录下会出现一个bin.ntx86目录。进入这个目录会看见bjam.exe。
我们把这个bjam.exe拷贝到boost 1.38的根目录即我的D:\boost_1_38_0。
同上面的方法打开Visual Studio 2008 命令提示,进入D:\boost_1_38_0。通过如下命令我们就可以查看当前版本的Boost的哪些组件需要编译了,因为Boost大部分组件都是以模板的形式存在的,不需要编译:
D:\boost_1_38_0>bjam --show-libraries
The following libraries require building:
- date_time
- filesystem
- function_types
- graph
- iostreams
- math
- mpi
- program_options
- python
- regex
- serialization
- signals
- system
- test
- thread
- wave
我们再去D盘根目录创建一个我们的目标安装文件夹:D:\BoostLib 1_38
接下来使用默认的方式将Boost1.38完整编译到目标文件夹:
D:\boost_1_38_0>bjam install --prefix="D:\BoostLib 1_38" debug
剩下的参数都用默认的了。敲下回车,好了,开始耐心等待编译完成吧。在此之前请确认您的D盘的剩余空间,要完整编译需要大约3G的剩余空间,主要是会生成很多临时文件,编译连接完之后我们可以删除掉的。曾经在网上看到说需要12G的空间,编译需要好几个小时,可能是现在不一样了吧,呵呵,电脑配置越来越好了。而且整个编译过程也需要一定的时间,编译Debug版本大约需要40-80分钟不等,Release也差不多,根据不同的机器配置会有所不同,当然配置越好越快啦。
编译的过程中会出现很多的Warning,你可以无视它们,基本上用于学习的目的,你很难很因为这些Warning而使得程序挂掉。
warning: No toolsets are configured.
warning: Configuring default toolset "msvc". // 这里由于我们没有选择编译器,所以这里默认选择了VC,由于我们是在Visual Studio 2008的命令提示下面,因此自动选择了VC9。VC2005也是同样的道理,我们选择VC2005的命令提示符就可以了。
warning: If the default is wrong, your build may not work correctly.
warning: Use the "toolset=xxxxx" option to override our guess.
warning: For more configuration options, please consult
编译的过程中会自动的帮你Copy一些诸如模板头文件等到目标文件夹去:
这个Copy过程大约需要三分钟。完成之后便开始编译:
期间会有一些警告,这些都可以无视。开始编译之后会在lib文件夹中出现相应的lib和dll文件,并且由于时间的推移会越来越多,这至少说明您的编译过程正在进行中。而且在编译的过程中还会发生COPY行为。
大家可以看看Boost生成的这些Lib文件,比如boost_regex-vc90-mt-gd-1_38.lib。它的命名很考究的。
boost代表这是boost库的组件
regex代表这个是正则表达式的库
VC90代表它是什么编译器版本
mt代表它支持多线程/ Multithreads
gd代表这是debug版本
1_38代表了Boost的版本号
是不是很有艺术感呢?
另外还有一些这样的Lib文件,比如libboost_iostreams-vc90-mt-gd-1_38.lib。它以libboost开头,这表示这些lib是静态库文件,属于静态连接的库文件。它们没有对应的dll文件。同时您也可以注意到它们都比只具备索引功能的lib大得多。跟动态库版本有啥区别不用我解释了吧?
O(∩_∩)O~
Debug版本编译完我生成了107个文件,你有多少个呢?
好了,接下来我们使用类似的步骤来编译Release版本的Boost:
Release版本的Lib和Dll的命名和Debug版本的差别就在于没有gd,比如:boost_math_c99f-vc90-mt-1_38.lib。
在等待了和编译Debug差不多的时间之后,我们的Boost就成功编译了。
为了符合我们通常SDK的习惯,我们把D:\BoostLib 1_38\include\boost-1_38\下面的boost目录全部拷贝到include目录下面,然后再把boost-1_38这个空的文件夹删除。
现在我们的所有头文件都在include文件夹下面了,保留boost文件夹只是为了符合boost的习惯;所有的lib和dll都位于lib文件夹下面。
但是整个过程还没有结束,我们还需要配置IDE。打开Visual Studio 2008 SP1(其它VC开发平台也类似),选择"工具",再选择"选项",然后在"项目和解决方案"下面选择vc++目录,在"包含目录"下面添加Boost的include路径:
在库文件下面添加Boost的lib路径:
现在Boost的安装目录已经膨胀到了1.04G:
源代码的目录,即D:\boost_1_38_0已经变得硕大无比,因为生成了大量的临时文件,我建议您删除该文件夹下面的bin.v2即可。
爽,编译完成,赶快来段代码,试试:
#include #include using namespace std; using namespace boost; int main() { cout>strBirthday; try { gregorian::date birthday( gregorian::from_simple_string(strBirthday) ); gregorian::date today( gregorian::day_clock::local_day() ); gregorian::days days_alive = today - birthday; if( days_alive < gregorian::days(0) ) { cout<<"哇,还没出生就能用电脑了,真厉害"<<endl; } else { cout<<"您在这个世界上出现了:"<< days_alive.days()<< "天了" << endl; } } catch( gregorian::bad_year& e ) { cerr<< e.what() << endl; } catch( gregorian::bad_day_of_month& e ) { cerr<< e.what() << endl; } catch( gregorian::bad_day_of_year& e ) { cerr<< e.what() << endl; } catch(...) { cerr<<"Error!"<<endl; } system( "pause" ); return 0; }
接下来,你就可以好好享受Boost的奇妙了。
发表评论
-
第7章 委托和事件
2012-01-20 01:08 652第7章 委托和事件 2011 ... -
史上最强劲之android模拟器命令详解
2012-01-20 01:08 755史上最强劲之android模拟器命令详解 2010年11月2 ... -
android_adb命令
2012-01-20 01:08 666android_adb命令 2010年12月17日 An ... -
虚拟研讨会:移动Web应用开发技术最新动态
2012-01-20 01:08 691虚拟研讨会:移动Web应用 ... -
程序工具
2012-01-19 08:57 545程序工具 2010年10月15日 开发(Developm ... -
arm linux 编译环境建立(文摘)
2012-01-19 08:57 455arm linux 编译环境建立(文摘) 2011年02月2 ... -
计算机概论
2012-01-19 08:57 520计算机概论 2011年04月26日 import 我.认 ... -
探索C++的秘密之一详解extern "C"
2012-01-19 08:57 593探索C++的秘密之一详解extern "C" ... -
库文件和系统调用的区别
2012-01-19 08:57 588库文件和系统调用的区 ... -
国产机免流下载网上资源方法(仅限移动用户
2012-01-17 01:27 482国产机免流下载网上资源方法(仅限移动用户 2011年06月0 ... -
2010-11-15
2012-01-17 01:27 5632010-11-15 2010年11月15日 ... -
2011-1-20
2012-01-17 01:27 6772011-1-20 2011年01月20日 ... -
电脑蓝屏自动关机故障的检修方法
2012-01-17 01:27 760电脑蓝屏自动关机故障的检修方法 2011年09月23日 ... -
liniux学习
2012-01-17 01:27 871liniux学习 2010年06月08日 ... -
身历六帝宠不衰
2012-01-15 20:08 585身历六帝宠不衰 2009年0 ... -
唐太宗,霸占过隋炀帝之妻吗?(图)
2012-01-15 20:08 503唐太宗,霸占过隋炀帝之 ... -
传奇美人之萧皇后
2012-01-15 20:08 586传奇美人之萧皇后 2010年06月03日 命运奇特的女人 ... -
花果山的快乐之家――邻水中学实习队
2012-01-15 20:08 559花果山的快乐之家――邻水中学实习队 2009年06月08日 ... -
Power designer 15生成sql server 2005/2008列注释
2012-01-11 12:17 623Power designer 15生成sql server 2 ... -
C语言读写配置文件
2012-01-11 12:17 584C语言读写配置文件 2011年03月04日 CExcep ...
相关推荐
编译Boost1.38
VisualStudio2008编译boost1.38[整理].pdf
最近研究源码需要用到VS2008和boost库,跟着教程研究了两天,成功了,顺便分享一下
使用VS2008环境编译boost库的指南,讲的很详细。文档里有作者的联系方式,我是一次通过,不会的可以联系作者
用VC编译boost库 boost库编译 boost库
VS2019编译好的boost_1_83_0库,环境为VS2019_msvc-14.2,下载后可直接使用
编译boost静态库 boost 1.58版本资源
VS2008编译Boost_1_47_0指南 按步骤讲解,很详细
S2010下编译boost S2010下编译boost vS2010下编译boost
在linux下编译boost库
Windows和Solaris上Boost安装和编译方法
boost版本为1.67,将此压缩包解压到(c盘)根目录,创建以qt工程,在pro文件中加上 INCLUDEPATH += C:\Boost\include\boost-1_67
在CentOS7虚拟机环境下编译的boost 1.69版本的静态库和动态库,经过测试,编译的库能够正常使用
boost windows编译好的版本,可以直接使用
boost编译
作者本人编译环境: windows 10 平台工具集:visual studio 2019 v142 注:!!!此处只有平台工具集相同才可以使用
Linux系统下使用gcc 5.3编译器编译的boost库1.68版本的动态库和静态库,多线程参数编译,经测试可用
qt编译的boost_1_69库,希望能帮助大家,完成之后可以在刚才指定的目录中找到编译好的库。 引用的时候,第一步添加头文件目录 在项目文件*.pro中添加以下信息(如:I:\boost_1_69\bin\include\boost) INCLUDEPATH += F:/...
通过VS命令行工具编译boost库、libevent库以及openssl
编译好的完整boost库,在vs2015下编译,boost版本为1.5.7