Boost库安装与使用

Boost

库非常不错,所以我今天就安了它一下下。

Boost

库不是
C++

标准库的一部分(据说在下一版本号的
C++

标准会採纳它),但它有一些标准库所没有的非常实用的一些功能,比方我非常须要的正則表達式(
Regular Expression)

。所以我今天就在
GCC

上安装这个东东。(好像
GCC

也自带
Regex

库,我没有太注意)

先从
Boost
.org


Download

一个
Boost

版本号的
tar.gz

包,

boost
×××.tar.gz

然后
tar -zxvf boost
×××.tar.gz

解压缩,在当前文件夹下得到一个
boost
×××

文件包

cd boost
×××

进入该文件包

我要用的
Regex

没有编译好,所以须要自己

build

而为了
build

,又先得
build

一个
jam

工具

cd tools/build/jam_src

里面有一个
build.sh

的脚本文件,
./build.sh

运行之,

会在内部的文件夹里生成几个可运行文件(能够
find -name bjam

找),里面有一个

bjam
cp bjam /usr/bin

然后进入
boost
×××

文件夹

运行
bjam

"
-sTOOLS=gcc"

install

就能够了

敲代码的时候,把对应的
.h

文件
include

在程序里

别的须要
build

的模块同上方法。

Enjoy Boost

-------------------------------------------------------------------------------------

相对于Windows来,Linux
下的boost
编译简单至极。没有那么多的可选编译器,没有那长的编译时间,没有那么多的硬盘使用量,统一的inlude和lib文件夹,你熟悉命令行,不使用IDE,不须要我那么罗嗦的介绍怎么配置EditPlus。

首先是下载boost
,能够在此

http://sourceforge.net/projects/boost

寻找一个合适的版本号。比方我下载的是boost
_1_33_1.tar.gz,解压到/opt。

tar xzvf boost
_1_33_1.tar.gz -C/opt

提醒:做这些事情的时候你须要有root权限。

进入boost
文件夹:

cd /opt/boost
_1_33_1

首先我们要编译bjam:

cd tools/build/jam_src/
./build.sh

非常快编译结束,默认情况下,bjam会被拷贝到/usr/local/bin/bjam。

注意:bjam的同文件夹下应该有boost
-build.jam等文件,有时候bjam在boost
_1_33_1/下

如今你能够使用bjam编译boost
了。

cd ../../..
bjam "
-sTOOLS=gcc"
 install

编译时间不会如windows那么长久,在我的电脑上编译了大约40分钟。你能够在前后使用df命令检查下磁盘使用,在我的电脑上,编译boost
花费了500M的空间。

使用install会把头文件拷贝到/usr/local/include/boost
-1_33_1中,把生成的lib拷贝到/usr/local/lib中。

这些完毕之后,记得要使用ldconfig来更新动态链接库,动态链接库路径的配置文件在

/etc/ld.so.conf
中。有的时候编译可以成功,可是执行时连接不到库,就是由于路径没有设对或者没有ldconfig。

另外:linux
静态链接库一般以.a结尾,动态链接库以.so结尾,分别相应于windows下的.lib与.dll。

在測试两个样例之前,我们先设置几个环境变量。

BOOST
_ROOT=/opt/boost
_1_33_1
BOOST
_INCLUDE=/usr/local/include/boost
-1_33_1
BOOST
_LIB=/usr/local/lib

为了使其可以在登录时自己主动导入,你可以写一个脚本:


#
!/bin/sh#boost
 
settings

BOOST
_ROOT
=/
opt
/
boost
_1_33_1

BOOST
_INCLUDE
=/
usr
/
local
/
include
/
boost

-
1_33_1

BOOST
_LIB
=/
usr
/
local
/
lib
 
export BOOST
_ROOT 
BOOST
_INCLUDE 
BOOST
_LIB


将其保存为/etc/profile.d/boost
.sh,并使用chmod a+x boost
.sh设置运行权限。

如今我们能够写两段代码来測试了。

第一个測试文件是lex.cpp:


#include

<

boost

/
lexical_cast.hpp
>


#include

<

iostream
>

int
 
main()

{

using
 
boost
::lexical_cast;

int
 
a

=
 
lexical_cast
<

int
>

(
"

123
"

);

double
 
b

=
 
lexical_cast
<

double
>

(
"

123.12
"

);


 
 
 
 
std::cout
<
<

a
<
<

std::endl;


 
 
 
 
std::cout
<
<

b
<
<

std::endl;

return

0
;


}


编译:

    g++ lex.cpp -I$BOOST
_ROOT -o lex

执行:

    ./lex

输出:

    123
    123.12

你能够将$BOOST
_ROOT改为$BOOST
_INCLUDE,假设你没有环境变量设置,能够改为/opt/boost
_1_33_1或者/usr/local/include/boost
-1_33_1。

我们的第二个样例是re.cpp:


#include

<

iostream
>


#include

<

string
>


#include

<

boost

/
regex.hpp
>

int
 
main()

{


 
 
 
std::
string
 
s

=

"

who,lives:in-a,pineapple 
 
 
 
under 
the 
sea?
"

;


 
 
 
boost
::regex 
re(
"

,|:|-|//s+
"

);


 
 
 
boost
::sregex_token_iterator

 
 
 
 
 
p(s.begin( 
), 
s.end( 
), 
re,

-
1
);


 
 
 
boost
::sregex_token_iterator 
end;

while
 
(p

!=
 
end)

 
 
 
 
 
 
std::cout

<
<

*
p
++

<
<


/n

;


}


编译:

    g++ re.cpp -I$BOOST
_ROOT -lboost_regex-gcc -o re

执行:

    ./re

输出:

    who
    lives
    in
    a
    pineapple
    under
    the
    sea?

这里要使用-l指定了链接库。

如今boost
的基本安装配置已经完毕,可是我们能够再改进下。

假设不想每次都指定boost
头文件文件夹,能够将其link到/usr/include中:

    ln -s /opt/boost
_1_33_1/boost
 /usr/include/boost

或者:

    ln -s /usr/local/include/boost
-1_33_1/boost
 /usr/include/boost

假设你依旧嫌boost
编译后占用的空间太大,能够在boost
文件夹下使用bjam clean:

    cd /opt/boost
_1_33_1
    bjam -sTOOLS=gcc clean

这个命令会清除编译时的中间文件,/usr/local/lib下带版本的boost
libs,和/usr/local/include下的boost
头文件。可是同一时候节省了几百M的硬盘空间。

所 以假设你使用了clean,记得将BOOST
_INCLUDE更为BOOST
_ROOT(/opt/boost
_1_33_1),将 /usr/include/boost
link到/opt/boost
_1_33_1/boost
,再有就是编译链接时的boost
lib不要带版本。

假设你认为编译时手动链接敲那么长的名字比較麻烦,能够使用脚本来自己主动寻找链接:


#
!/usr/bin/python

import
 
os

import
 
sys

import
 
re

BOOST
_ROOT

=
 
os.getenv(

BOOST
_ROOT

)

BOOST
_LIB

=
 
os.getenv(

BOOST
_LIB

)

#
BOOST
_ROOT 

‘/opt/boost
_1_33_1‘


#
BOOST
_LIB 

‘/usr/local/lib‘

def
 
getlibs():

 
 
 
 
alls

=
 
os.listdir(BOOST
_LIB)

 
 
 
 
libpattern

=
 
re.compile(r

^libboost_([^-]+)-gcc

)

 
 
 
 
libs

=
 
{
}

for
 
lib

in
 
alls:

 
 
 
 
 
 
 
 
m

=
 
libpattern.match(lib)

if
 
m:

 
 
 
 
 
 
 
 
 
 
 
 
libs[m.group(
1
).lower()]

=

1

return
 
libs

pattern

=
 
re.compile(r

^/s*#include/s*<
/s*boost
/(.+)/.(h|hpp)/s*>


)

libs

=
 
getlibs()

libskeys

=
 
libs.keys()

includes

=
 
{
}


ENV

=
 
os.environ

ARGV

=
 
sys.argv[
1
:]

files

=
 
ARGV

if
 
len(files)

==
 
0:


 
 
 
sys.exit()

for
 
f

in
 
files:

if
 
f.lower().endswith(

.cpp

):

 
 
 
 
 
 
 
 
fp

=
 
open(f,


r

)

 
 
 
 
 
 
 
 
lines

=
 
fp.readlines()

for
 
ln

in
 
lines:

 
 
 
 
 
 
 
 
 
 
 
 
m

=
 
pattern.match(ln)

if
 
m:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
libname

=
 
m.group(
1
).lower()

if
 
libname

in
 
libskeys:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes[libname]

=

1


libline

=


.join(map(
lambda
 
lib:


-lboost_

+
lib
+

-gcc


includes.keys()))

obj

=
 
ARGV[0]

obj

=
 
obj[:len(obj)
-
4
]

#
cmd 

‘g++ 
%s 
-I%s 
%s 
-o 
%s‘ 

(‘ 
‘.join(files), 
BOOST
_ROOT, 
libline, 
obj)

cmd

=


g++ 
%s 
%s 
-o 
%s

%
 
(


.join(files), 
libline, 
obj)

print
 
cmd

os.system(cmd)


将这段代码写进/usr/local/bin/gccboost,赋予运行权限。

用法:

    gccboost lex.cpp
    gccboost re.cpp

注意:使用此命令如果boost
头文件在/usr/include中,如果如果不成立,请自行改动脚本此行:

    cmd = ‘g++ %s %s -o %s‘ % (‘ ‘.join(files), libline, obj)

为之前的凝视行:

    cmd = ‘g++ %s -I%s %s -o %s‘ % (‘ ‘.join(files), BOOST
_ROOT, libline, obj)

如若BOOST
_ROOT和BOOST
_LIB环境变量不存在,改动以下两行代码:

    BOOST
_ROOT = os.getenv(‘BOOST
_ROOT‘)
    BOOST
_LIB = os.getenv(‘BOOST
_LIB‘)

为之后凝视行:

    BOOST
_ROOT = ‘/opt/boost
_1_33_1‘
    BOOST
_LIB = ‘/usr/local/lib‘

另外,gccboost将会自己主动改动输出的文件名称为*.cpp的文件名称(如lex.cpp将输出lex),假设不须要,请将以下的代码:

    cmd = ‘g++ %s %s -o %s‘ % (‘ ‘.join(files), libline, obj)

改为:

    cmd = ‘g++ %s %s‘ % (‘ ‘.join(files), libline)

Boost库安装与使用

时间: 2024-10-22 12:16:03

Boost库安装与使用的相关文章

Linux/ubuntu下的boost库安装

我一直都没有写博客的习惯,最近正好在研究linux下的开发(目前也只是粗粗的研究),且用到了boost库,就乘此机会写点什么,最起码记录一下我在安装boost的一些步骤,主要给和我一样的linux开发新手们提供点借鉴(当然如果看到这篇文档的话 ),作者(jwybobo2007). 1.下载boost库 这个我就不说啥了,去官网看一下就能下到:www.boost.org ,现在的版本更新到了1.44 2.执行:sudo apt-get install build-essential 不为别的,就是

vs2012 boost库安装配置

www.boost.org下载boost库,解压 打开vs2012的Visual Studio Tools中的VS2012 x86 Native Tools Command Prompt 进入boost库目录执行bootstrap.bat,生成bjam.exe工具 执行bjam toolset=msvc-12.0 variant=debug,release threading=multi link=static 生成boost库 build成功会显示 The Boost C++ Librarie

VS2013中安装配置和使用Boost库

时间:2014.07.24 地点:基地 -------------------------------------------------------------------------------------- 一.前言 今天准备去看场电影<后会无期>,但在这之前,我想好好研究下大名鼎鼎的Boost库. -------------------------------------------------------------------------------------- 二.Boost安

vs配置boost库

步骤: 1.在boost官网下载boost版本,以1.59.0为例. 2.解压,解压后可看到文件夹下有个bootstrap.bat文件. 注意: 如果有以下error: 'cl' 不是内部或外部命令,也不是可运行的程序 或批处理文件. solution: 环境变量中加cl.exe的路径到path中,如 path C:\Microsoft Visual Studio 11.0\VC\bin\. 3.打开cmd命令窗口,运行boosttra.bat文件.生成了一个名为bjam.exe的文件. 4.c

windows下安装boost库

工作中现在会接触boost,所以我计划两个月之内努力熟悉一下boost.今天在自己win10系统上尝试安装了boost库,下面把遇到的问题总结一下: 1. 下好1.61版本库,在boost目录下运行bootstrap.bat 时发现dos闪退且目录下并没有多出bjam.exe和b2.exe,以管理员权限运行也是没结果. 后来索性重启了下电脑,果然解决问题. 2. 接下来就是编译,编译命令的话上网搜下就有了,关键出现了CL不识别的问题,这个问题也好解决.在自己的boost目录下 shift+右键,

在win7 + vs express for desktop中安装stlport和boost库

一.安装stlport stlport是将sgi的stl库平移到各个平台上.sgi的这个库的特点就是效率非常高.boost在这个库上面运行要比vs自带的stl库效率高.所以我们首选安装stlport. 下载stlport:http://sourceforge.net/projects/stlport/ 最新版本是5.2.1 放到C盘根目录下面,解压.进入"vs2012 x86 native tools command prompt".(注意:用cmd不行) 进入"C:\STL

VS2008下直接安装使用Boost库1.46.1版本号

Boost库是一个可移植.提供源码的C++库,作为标准库的后备,是C++标准化进程的发动机之中的一个. Boost库由C++标准委员会库工作组成员发起,当中有些内容有望成为下一代C++标准库内容.在C++社区中影响甚大,是不折不扣的“准”标准库. Boost因为其对跨平台的强调,对标准C++的强调,与编写平台无关.大部分boost库功能的使用仅仅需包含对应头文件就可以,少数(如正則表達式库,文件系统库等)须要链接库.但Boost中也有非常多是实验性质的东西,在实际的开发中有用须要慎重.boost

linux下编译安装boost库

转载:http://www.cnblogs.com/oloroso/p/4632848.html linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4.安装boost库到指定目录 5.测试一下 代码 编译运行 先看一下系统环境 Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15

vs2010 boost库的编译与安装

编译过程: 1.首先去http://www.boost.org/users/download/下载boost的源码; 2.然后将源码放入一个文件加内,比如c:\lib\boost\boost_1_59_0\下 3.进入Visual Studio x64命令提示(2010)窗口,cd到c:\lib\boost\boost_1_59_0\中 4.执行命令: bootstrap b2--toolset=msvc-10.0 --build-type=complete stage The first co