Boost在Linux和windows下的编译 32位 64位 - Go语言中文社区

Boost在Linux和windows下的编译 32位 64位


简言

1. Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一

2. Boost官网地址:http://www.boost.org/

3. 本博客示例所用的版本为boost1.55,版本下载地址为:http://www.boost.org/users/history/version_1_55_0.html

二  Windows下的编译(环境是win7 VS2008)

1. 从上面的boost1.55下载地址下载,windows环境下请下载zip格式的文件,得到压缩包boost_1_55_0.zip

2. 解压得到文件目录boost_1_55_0,笔者这里解压后的boost根目录为H:boostboost_1_55_0

3.从“开始菜单”中打开Microsoft Visual Studio 2008的命令行,如下图所示

        

4. 进入到刚才我们解压的boost跟目录,即H:boostboost_1_55_0,方法是:首先输入“H:”,回车,再输入“cd boostboost_1_55_0”,回车,再输入“bootstrap.bat”,回车,稍等几秒钟即可产生编译工具bjam.exe和b2.exe,如下图所示

      

5. bjam是专门为boost库设计的编译工具,b2.exe 、bjam.exe 这两个exe作用是一样的,bjam.exe 是老版本,b2是bjam的升级版本

6. 接着输入 bjam stage --toolset=msvc-9.0 --stagedir="H:boostboost_1_55_0vc90" architecture=x86 address-model=32 link=static runtime-link=shared threading=multi debug release --with-system --with-thread --with-date_time  ,回车,如下图所示(注意:这里仅编译了指定的库:system, thread, date_time,若想编译全部库,请使用--build-type=complete)

      

7. 会发现在 H:boostboost_1_55_0vc90lib目录下已经产生了编译好的库文件,如下图所示

      

 

三:Linux下的编译(环境是centos6.8 gcc 4.4.7)

1. 运行命令:yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs Python-devel -y  预先安装这些库,因为下面编译boost时会需要,若已安装,安装时会自动跳过,无需担心

 

2. 定位到/home目录,运行命令:wget https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download  从上面的boost1.55下载地址下载压缩包

Linux环境下请下载tar后缀的文件,得到压缩包boost_1_55_0.tar.gz,笔者这里是下载后的路径为:/home/boost_1_55_0.tar.gz

3. 运行命令:tar -zxvf boost_1_55_0.tar.gz    解压到当前目录

4. 运行命令:cd boost_1_55_0   进入刚才的解压出来的目录

5. 运行命令:./bootstrap.sh   产生后面编译所必需的bjam

6. bjam是专门为boost库设计的编译工具,b2 、bjam 这两个可执行程序的作用是一样的,bjam 是老版本,b2是bjam的升级版本

7. 运行命令:./b2 --show-libraries  可以显示所有需要编译的库的名字

8. 运行命令:./b2 stage --toolset=gcc --stagedir="homeboost_1_55_0gcc" architecture=x86 address-model=64 link=shared runtime-link=shared threading=multi --with-system --with-thread --with-date_time

9. 稍等十几分钟,即可在目录/home/boost_1_55_0/gcc下看到编译出来的库,如下图所示(注意:上面只编译了指定的三个库,system,thread, data_time,若想编译所有库,去掉后面的--with-选项即可)

 

下面对上面的bjam的各个参数进行解释说明:

1. stage/install:
stage表示只生成库(dll和lib),install表示附带安装功能,会生成包含头文件的include目录。推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(H:boostboost_1_55_0boost,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间

 

2. toolset:
表示编译器工具,默认自动检测,安装了多个编译器的时候可以使用此属性。可选的如borland、gcc、msvc(VC6)、msvc-12.0(VS2013)、msvc-14.0(VS2015)等,我安装的是VS2008,所以是msvc-9.0(如果你是VS2005,可以使用msvc-8.0 VS2010是msvc-10.0)

 

3. stagedir/prefix:
stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,例如这里是VS2008对应的是 H:boostboost_1_55_0vc90
如果使用了install参数,那么还将生成头文件目录,vc90 对应的就是 H:boostboost_1_55_boostbinvc90includeboost_1_55_0boost

 

4. architecture

表示架构,也就是你的CPU架构,所以是x86

 

5. address-model

地址长度,32表示编译32位的库文件,64表示编译64位的库文件

 

6. link
生成动态链接库还是静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘

 

7. runtime-link
动态还是静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译

GCC下,在生成动态库(–link=shared)时,就不允许进行静态链接到C运行库(或C++标准库)

 

8. threading
单线程还是多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式

 

9. debug/release:
编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译

 

10. without/with:
选择不编译/编译哪些库。这里我们指定要编译哪些库,就使用了witth,注意写法:--with-thread --with-date_time,同样,如果不想编译哪些库,可以类似写法--without-thread

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yzf279533105/article/details/77658367
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 21:53:01
  • 阅读 ( 1333 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢