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

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="\home\boost_1_55_0\gcc" 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:\boost\boost_1_55_0\boost,只比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:\boost\boost_1_55_0\vc90
如果使用了install参数,那么还将生成头文件目录,vc90 对应的就是 H:\boost\boost_1_55_\boost\bin\vc90\include\boost_1_55_0\boost

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值