澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站Linux上安装使用boost入门指

ubuntu下boost编译安装

boost

安装

环境:Ubuntu 12.04 32bit,boost 1.49

环境:Ubuntu 12.04 32bit,boost 1.49

 

centos 六.5 安装编译 boost 库

动用源码安装boost 。

(一)首先去官方网址下载boost源码安装包:

选用下载对应的boost源码包。这次下载应用的是boost_1_60_0.tar.gz

(2)解压文件:tar -zxvfboost_1_60_0.tar.gz

(3)进入源代码路线实行命令 ./bootstrap.sh

这一条命令实现boost暗中同意配置,当然编写翻译boost是亟需gcc 和 g 的帮助的。假设未有gcc 和 g 能够实践命令:

yum installgcc gcc-c 安装gcc g

这一条命令暗中认可的设置路线配置为/usr/local/路径下。及举行那条命令等同实施以下命令

./bootstrap.sh –prefix=/usr/local/

也正是私下认可的boost头文件安装到/usr/local/include/文件夹下。boost库文件会设置到/usr/local/lib/文件夹下。安装完成现在你会在对应的公文夹下看到对应的公文。

(四)实施完上一条命令之后方可推行命令 ./b二举行编写翻译。(注意:编写翻译要求消耗一定长的壹段时间)

(伍)然后实行上面安装命令

./b2 install或者./bjam install

安装命令应该是管理员权限,因为急需到向系统中拷贝文件及库文件。

(陆)将/usr/local/include下的boost文件夹及里面包车型大巴剧情全方位拷贝到/usr/include/下。

将/usr/local/lib下的有着文件拷贝到/usr/lib下。

(7)测试test.cpp

[cpp]view plaincopyprint?澳门新浦京娱乐场网站 1澳门新浦京娱乐场网站 2

  1. #include<boost/thread.hpp>
  2. #include<iostream>
    1. voidtask1(){
  3. //dostuff
  4. std::cout<<"Thisistask1!"<<std::endl;
  5. }
    1. voidtask2(){
  6. //dostuff
  7. std::cout<<"Thisistask2!"<<std::endl;
  8. }
    1. intmain(intargc,char**argv){
  9. usingnamespaceboost;
  10. threadthread_1=thread(task1);
  11. threadthread_2=thread(task2);
    1. //dootherstuff
  12. thread_2.join();
  13. thread_1.join();
  14. return0;
  15. }

编写翻译指令:g test.cpp -o test -lboost_thread
(注意:因为程序中用到了线程库,在编写翻译的时候需求手动连接相关动态库 -lboost_thread,全部的动态库已经从/usr/local/lib拷贝到/usr/lib下了)

六.5 安装编写翻译 boost 库 使用源码安装boost 。 (一)首先去官方网址下载boost源码安装包: 选取下载对应的boost源码包。本次下...

一.借助安装

  1. apt-get install mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev 


初期计划:boost中,用到了其他函数库,所感觉了利用boost中相应的法力,供给先安装系统中可能缺点和失误的库 

早期图谋:boost中,用到了其他函数库,所以为了接纳boost中相应的职能,要求先安装系统中也许缺点和失误的库 

Linux上设置使用boost入门指点

2.访问boost官网下载boost最新版本

apt-get install mpi-default-dev  #安装mpi库

apt-get install mpi-default-dev  #安装mpi库

获得boost

3.解压下载文件,比如下载文件在~/Downloads下

  1. cd ~/Downloads 


  2. tar --bzip2 -xvf boost_1_58_0.tar.bz2 


apt-get install libicu-dev     #支撑正则表明式的UNICODE字符集 

apt-get install libicu-dev     #支撑正则表明式的UNICODE字符集 

boost分布

四.预备安装

  1. cd boost_1_58 


  2. ./bootstrap.sh 


浮动文书b二和bjam总结md五sum发现双方1致
生成bjam,上述命令能够包涵各类选项,具体可参照扶助文档: ./bootstrap.sh --help。在这之中–prefix参数,能够指定安装路线,如若不带–prefix参数的话(推荐),暗中同意路线是 /usr/local/include 和 /usr/local/lib,分别存放头文件和各类库。推行到位后,会生成bjam,已经存在的本子将会被活动备份。注意,boost 1.4玖会在当前目录下,生成八个文本bjam和b二,那多个是壹致的,

apt-get install python-dev     #需要python的话

apt-get install python-dev     #需要python的话

只要求头文件的库

5.编写翻译并安装boost

编写翻译完结后,举行设置,也便是将头文件和浮动的库,放到钦点的门径(–prefix)下

  1. ./b2  //编译boost 


  2. sudo ./b二 install //将生成的库安装到/usr/local/lib目录上面,暗中认可的头文件在/usr/local/include/boost目录下面。 


apt-get install libbz2-dev     #假如编写翻译出现谬误:bzlib.h: No such file or directory

apt-get install libbz2-dev     #设若编译出现谬误:bzlib.h: No such file or directory

行使boost创建2个简便的程序

6.卸载

将/usr/local/lib和/usr/local/include/boost多少个目录下的文件一贯删除就足以。

上述函数库装好之后,就能够编写翻译boost库了。解压boost_1_49_0.tar.bz2,得到/boost_1_49_0,将当前工作目录切换来此文件夹下。

上述函数库装好之后,就能够编写翻译boost库了。解压boost_1_49_0.tar.bz2,得到/boost_1_49_0,将当前职业目录切换来此文件夹下。

希图使用boost贰进制文件库

七.测试安装是不是科学

新建cpp文件

  1. vim boot.cpp 


  2. #include <string> 


  3. #include <iostream> 


  4. #include <boost/version.hpp> 


  5. #include <boost/timer.hpp> 


  6. using namespace std; 


  7. int main() 



  8. boost::timer t; 


  9. cout << "max timespan: " << t.elapsed_max() / 3600 << "h" << endl; 


  10. cout << "min timespan: " << t.elapsed_min() << "s" << endl; 


  11. cout << "now time elapsed: " << t.elapsed() << "s" << endl; 


  12. cout << "boost version" << BOOST_VERSION <<endl; 


  13. cout << "boost lib version" << BOOST_LIB_VERSION <<endl; 


  14. return 0; 



编译

  1. g boot.cpp -o boot 


  2. ./boot 


职业有成编写翻译之后会议及展览示结果,最终两行打字与印刷boost版本

  1. max timespan: 2.56205e 09h 


  2. min timespan: 1e-06s 


  3. now time elapsed: 0.000121s 


  4. boost version106300 


  5. boost lib version1_63 


./bootstrap.sh

./bootstrap.sh

澳门新浦京娱乐场网站Linux上安装使用boost入门指导,Ubuntu下编译安装boost库。把你的程序链接到boost库

生成bjam,上述命令能够涵盖各样选项,具体可参看支持文书档案: ./bootstrap.sh --help。在那之中--prefix参数,能够指虞诩装路线,倘若不带--prefix参数的话(推荐),暗中同意路线是 /usr/local/include 和 /usr/local/lib,分别存放头文件和种种库。试行到位后,会生成bjam,已经存在的脚本将会被机关备份。注意,boost 壹.49会在当前目录下,生成三个文件bjam和b二,那七个是1律的,所以接下去的步调,能够用那两其中的任性2个来实践。

生成bjam,上述命令能够涵盖种种选项,具体可参考帮助文档: ./bootstrap.sh --help。其中--prefix参数,能够指定安装路径,假如不带--prefix参数的话(推荐),暗中同意路线是 /usr/local/include 和 /usr/local/lib,分别存放头文件和种种库。试行到位后,会生成bjam,已经存在的本子将会被活动备份。注意,boost 一.4玖会在当前目录下,生成三个公文bjam和b二,那多个是千篇壹律的,所以接下去的步子,能够用那两在那之中的大肆1个来进行。

1.获得boost

using mpi ;  #若果急需MPI效率,要求在 /tools/build/v2/user-config.jam 文件的最后加多

using mpi ;  #要是供给MPI功效,须求在 /tools/build/v2/user-config.jam 文书的末段加多

下载boost_1_46_1.tar.bz2

接下去即是利用生成的bjam脚本编写翻译源代码了

接下去正是接纳生成的bjam脚本编写翻译源代码了

解压

./b2 -a -sHAVE_ICU=1  #-a参数,代表重新编写翻译,-sHAVE_ICU=1代表补助Unicode/ICU

./b2 -a -sHAVE_ICU=1  #-a参数,代表重新编译,-sHAVE_澳门新浦京娱乐场网站Linux上安装使用boost入门指导,Ubuntu下编译安装boost库。ICU=壹代表援救Unicode/ICU

2.boost分布

在意,这里是一体编写翻译。当然也能够挑选只编写翻译一部分,选项 --with-<library> 只编写翻译内定的库,如输入--with-regex就只编写翻译regex库了。boost1.49的通通编写翻译,在笔者速龙® Core™2 Duo CPU T5750 @ 贰.00GHz × 2 ,二G DD宝马7系二内部存款和储蓄器的老机子上,使用上述选项,半个钟头就基本上了。那些时间是还不错的。全体编译安装,心思上感到也舒畅女士些。^_^

注意,这里是1体编写翻译。当然也足以选择只编写翻译1部分,选项 --with-<library> 只编写翻译钦定的库,如输入--with-regex就只编写翻译regex库了。boost壹.4九的一心编写翻译,在小编AMD® Core™二 Duo CPU T5750 @ 贰.00GHz × 二 ,贰G DD奥迪Q5二内部存款和储蓄器的老机子上,使用上述选项,半个钟头就基本上了。那么些日子是尚可的。全体编译安装,心思上感觉也痛快淋漓些。^_^

boost_1_46_1.........................boost根目录

bjam的局地常用的参数,列表如下:

bjam的壹对常用的参数,列表如下:

  boost/.....................................所有boost头文件

--build-dir=<builddir> 编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)
--stagedir=<stagedir> 存放编译后库文件的路径,默认是stage
--build-type=complete

编译所有版本,不然只会编译一小部分版本,确切地说是相当于:

variant=release, threading=multi;link=shared|static;runtime-link=shared

variant=debug|release 决定编译什么版本(Debug or Release?)
link=static|shared 决定使用静态库还是动态库
threading=single|multi 决定使用单线程还是多线程库
runtime-link=static|shared 决定是静态还是动态链接C/C 标准库
--with-<library> 只编译指定的库,如输入--with-regex就只编译regex库了
--show-libraries 显示需要编译的库名称
--build-dir=<builddir> 编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)
--stagedir=<stagedir> 存放编译后库文件的路径,默认是stage
--build-type=complete

编译所有版本,不然只会编译一小部分版本,确切地说是相当于:

variant=release, threading=multi;link=shared|static;runtime-link=shared

variant=debug|release 决定编译什么版本(Debug or Release?)
link=static|shared 决定使用静态库还是动态库
threading=single|multi 决定使用单线程还是多线程库
runtime-link=static|shared 决定是静态还是动态链接C/C 标准库
--with-<library> 只编译指定的库,如输入--with-regex就只编译regex库了
--show-libraries 显示需要编译的库名称

  libs/........................................Tests,.cpps,docs等的库文件

编写翻译完成后,实行设置,也等于将头文件和变化的库,放到内定的路径(--prefix)下

编写翻译达成后,举行安装,也正是将头文件和生成的库,放到钦定的路线(--prefix)下

注意:

./b2 install

./b2 install

  (1)boost根目录(通常是/usr/local/boost_1_46_1)想到$BOOST_ROOT变量中

至此,假诺1切顺遂,就产生安装了。写个小程序核准下,来自《Boost程序库完全开拓指南——深刻C “准”规范库(修订版)》(罗剑锋著,电子工业出版社二〇一二.5)

由来,如若一切顺遂,就到位安装了。写个小程序查证下,来自《Boost程序库完全开采指南——深远C “准”规范库(修订版)》(罗剑锋著,电子工业出版社2013.5)

  (二)编写翻译程序时假诺用到boost库,必要钦定头文件路线-I$BOOST_ROOT

Boost程序库完全开辟指南——深刻C “准”标准库高清PDF版下载: 

Boost程序库完全开拓指南——深切C “准”规范库高清PDF版下载:http://www.linuxidc.com/Linux/2013-07/87574.htm 

  (三)因为有着头文件都在boost文件夹下,并且头文件都以hpp后缀,所#include形如:

#include "stdcpp.hpp"

#include "stdcpp.hpp"

    #include <boost/whaever.hpp>

#include <boost/timer.hpp>

#include <boost/timer.hpp>

3.只供给头文件的库

 

 

  绝大诸多的boost库都以header-noly的:它们统统由包涵模板和inline函数的头文件组成,不要求单独编写翻译和2进制库文件,也不需求链接时特意对待。

using namespace boost;

using namespace boost;

  唯有上面包车型大巴boost库必需单独built:

 

 

Boost.Filesystem

int main()

int main()

Boost.GraphParallel

{

{

Boost.IOStreams

    timer t;

    timer t;

Boost.MPI

    cout << "max timespan: " << t.elapsed_max() / 3600 << "h" << endl;

    cout << "max timespan: " << t.elapsed_max() / 3600 << "h" << endl;

Boost.ProgramOptions

    cout << "min timespan: " << t.elapsed_min() << "s" << endl;

    cout << "min timespan: " << t.elapsed_min() << "s" << endl;

Boost.Python (see the Boost.Python build documentation before building and installing it)

 

 

Boost.Regex

    cout << "now time elapsed: " << t.elapsed() << "s" << endl;

    cout << "now time elapsed: " << t.elapsed() << "s" << endl;

Boost.Serialization

 

 

Boost.Signals

    return EXIT_SUCCESS;

    return EXIT_SUCCESS;

Boost.System

}

}

Boost.Thread

程序输出:

先后输出:

Boost.Wave

max timespan: 0.596523h

max timespan: 0.596523h

  上边那一个单独built是可选(optional)的: 

min timespan: 1e-06s

min timespan: 1e-06s

  Boost.DateTime  Boost.Graph  Boost.Math  Boost.Random  Boost.Test

now time elapsed: 0s

now time elapsed: 0s

四.利用boost建构简单的程序

Ubuntu编写翻译安装boost并在eclipse C/C 中选择

有关阅读:

  下边包车型大巴先后(example.cc)只用到header-only库。它是从标准输入中读入1串整数,使用Boost.Lambda各样数乘以三后输出。

-----------------------------------分割线-----------------------------------

Ubuntu编写翻译安装boost并在eclipse C/C 中应用 http://www.linuxidc.com/Linux/2011-04/34790.htm

view sourceprint?

自家也在ubuntu下装了boost,可是蒙受了一些主题材料:
www.bkjia.com @www.bkjia.com:~/Code$ g -lboost_filesystem -lboost_system main.cpp
/tmp/cclYtfBf.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text 0x49): undefined reference to `boost::system::generic_category()'
main.cpp:(.text 0x53): undefined reference to `boost::system::generic_category()'
main.cpp:(.text 0x5d): undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status

-----------------------------------分割线-----------------------------------

#include <boost/lambda/lambda.hpp>

也正是说加了#include<boost/filesystem.hpp>那句之后霎时出错,其余都没难点。不知到你有没有碰着这些标题啊?

自作者也在ubuntu下装了boost,可是蒙受了一些标题:
www.linuxidc.com @www.linuxidc.com:~/Code$ g -lboost_filesystem -lboost_system main.cpp
/tmp/cclYtfBf.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text 0x49): undefined reference to `boost::system::generic_category()'
main.cpp:(.text 0x53): undefined reference to `boost::system::generic_category()'
main.cpp:(.text 0x5d): undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status

#include <iostream>

答:

也正是说加了#include<boost/filesystem.hpp>那句之后登时出错,别的都没难点。不知到您有未有遭遇那个主题材料吧?

#include <iterator>

"boost/filesystem.hpp" 这些文件注重于boost_system,编写翻译的时候,要求-lboost_system选项,然而你的编写翻译选项里头已经钦点该选拔,为何还会冒出链接错误呢。小编也嫌疑了半天,后来开采,原来是-l选项的顺序难点。在g 的man帮忙消息里面,作者意识了上面包车型大巴话:

答:

#include <algorithm>

引用It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o. If bar.o refers to functions in z, those functions may not be loaded.

"boost/filesystem.hpp" 那么些文件重视于boost_system,编写翻译的时候,必要-lboost_system选项,可是你的编写翻译选项里头已经钦定该选用,为啥还会并发链接错误啊。笔者也嫌疑了半天,后来察觉,原来是-l选项的依次难点。在g 的man扶助音讯里面,笔者发掘了上面的话:

 

读完那段话,应该就清楚出错原因了。所以,化解方案就是用上边包车型地铁授命来编写翻译:

引用It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o. If bar.o refers to functions in z, those functions may not be loaded.

int main()

引用g main.cpp -lboost_system -lboost_filesystem

读完那段话,应该就掌握出错原因了。所以,化解方案就是用上面包车型客车命令来编写翻译:

{

1二.0四 3贰bit,boost 一.49早先时代筹划:boost中,用到了其他函数库,所感觉了选取boost中相应的成效,须要先安装系统中大概缺点和失误的库...

引用g main.cpp -lboost_system -lboost_filesystem

    using namespace boost::lambda;

越来越多Ubuntu相关音信见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

    typedef std::istream_iterator<int> in;

澳门新浦京娱乐场网站 3

 

    std::for_each(

        in(std::cin), in(), std::cout << (_1 * 3) << " " );

}

编译:g   -I$BOOST_ROOT  example.cc  -o  example

运行:echo 1 2 3 | ./example

伍.预备利用boost二进制库

  如若您的次第用到须要单独编译的boost库,你要求首先获得那一个二进制库文件。

5.一编写翻译安装全体二进制库文件

  cd $BOOST_ROOT

  ./bootstrap.sh  --help

  ./bootstrap.sh  --prefix=/usr/local    ##实际上暗许景况下prefix的值正是/usr/local

  此时生成了bjam可施行文件,那个东西正是用来编写翻译boost库的。

  ./bjam  install

伍.2仅安装钦命的二进制库文件

  下边均采取系统暗中认可的编写翻译器,即Linux上的gcc。

  5.2.1安装Boost.build

  Boost.Build是一个用以支付、测试、安装软件的根据文本的种类。Boost.Build的扭转安装步骤:

  (1)cd $BOOST_ROOT/tools/build/v2

  (2)./bootstrap.sh

  (3)./bjam  install  --prefix=/usr/local/      ##prefix是Boost.Build安装地方

  (4)把prefix/bin放到PATH中          ##当然/usr/local/bin已经PATH中了

  五.2.2调用bjam时不钦赐toolset则动用系统私下认可的编写翻译器。如若你的Linux上装了分歧版本的gcc,则使用toolset选项时能够钦定版本号:toolset=gcc-四.四

  伍.二.3钦赐build路线,通过--build-dir=/path选项,不钦定时默许在近来路径下创设bin.v二文件夹,把变化的文本放在其内。

  5.2.4调用bjam

  cd  $BOOST_ROOT

  bjam  --build-dir=./build-boost  toolset=gcc   stage

  上边的授命将开创static and shared non-debug multi-threaded variants of the libraries.假设要确立具备的variants,请使用"--build-type=complete"选项。

  全部的boost2进制库文件将身处stage/lib/下,要是您要其它钦命路径,请使用“--stagedir=directory"选项。

  注意为节省build时间,你大概须要少build一些库文件:

查看库文件名称  --show-libraries

限制build哪些库  --with-libraryname或者--without-libraryname

分选特定的build variant  adding release or debug to the command line

  友情提醒:Boost.Build会变动多数告知输出,借使您能担保建构进度不出错误,你能够禁止那个输出以节省时间。方法:在指令后扩展”>build.log  2>&1"

六.把您的程序链接到boost库

  下边的先后是从邮件中抽取“大旨”内容,它利用了Boost.Regex库,这几个库是亟需单独编写翻译的。

view sourceprint?

#include <boost/regex.hpp>

#include <iostream>

#include <string>

 

int main()

{

    std::string line;

    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    

    while (std::cin)

    {

        std::getline(std::cin, line);

        boost::smatch matches;

        if (boost::regex_match(line, matches, pat))

            std::cout << matches[2] << std::endl;

    }

}

编译:

方法A:g   -I$BOOST_ROOT  example.cc -o example  $BOOST_ROOT/stage/lib/ -lboost_regex.a

方法B:g   -I$BOOST_ROOT  example.cc -o example  -L$BOOST_ROOT/stage/lib/ -lboost_regex

当你要动用几个库源于三个门路时行使方式B就仔细了(paid off)。注意到艺术B中并未有内定.a(静态库)还中.so(动态库),系统将自动地帮你挑选使用静态库照旧动态库,当然你能够经过选项“-static"展现地钦点。

陆.1库文件的命名情势

拿libboost_regex-gcc34-mt-d-1_36来说:

lib....................................通用前缀

boost_regex.....................库名

gcc3四...............................编写翻译时使用的toolset是gcc-三.四

mt...................................编写翻译时是协助二十多线程的

d/s/g/y/p..........................ABI tag

1_36................................Tag version

六.二运营大家的顺序

  首先新建1个文本文件mail.txt

view sourceprint?

To: George Shmidlap

From: Rita Marlowe

Subject: Will Success Spoil Rock Hunter?


See subject.

假如我们的程序链接到了三个共享动态库,大家必要让系统明白到何地去加载它。请看本人的~/.bashrc文件:

view sourceprint?

#boost

export BOOST_ROOT="/usr/local/boost_1_46_1"

export LD_LIBRARY_PATH="/usr/local/boost_1_46_1/stage/lib:$LD_LIBRARY_PATH"

运营程序:./example  <  mail.txt

应该出口

view sourceprint?

Will Success Spoil Rock Hunter?

得到boost boost分布只要求头文件的库 使用boost营造2个简便的次序 筹划使用boost二进制文件库 把您的程序链接...

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:澳门新浦京娱乐场网站Linux上安装使用boost入门指