Linux中安装boost库详解

     boost作为一个准标准库,在C++大型项目中经常要用到。在Linux中安装和配置boost库并不难,下面以我在Ubuntu8.04(内核2.6.24-24)下安装boost的经验为例,介绍boost的安装和配置。
    (1)下载最新的 boost库,下载地址: http://www.boost.org
    (2)解压 boost。若下载的是.tar.gz包,用tar xzvf boost_1_38_0.tar.gz来解压。若下载的是.tar.bz2包,用tar --bzip2 -xf /boost_1_38_0.tar.bz2解压。
    (3)安装 boost注意事项。boost 库文件有两种类型,一种是无需编译的库文件(Header-Only Libraries),我们可以直接使用它们来写C++程序,只要保证gcc能找到这些库文件的头文件。一种是需要单独编译的库文件(Separately-Compiled Libraries),这些库文件只有源文件我们还不能用来写C++程序,必须把它们编译成二进制文件并安装到系统中才能用。这是因为这些库依赖于操作的某些功能实现,如线程、文件系统、信号等(可见这些库在不同的操作系统上有不同的实现,只是向程序员提供了一致的接口)。编写C++程序若要使用这些单独编译的库,在编译程序时还要指定其二进制文件(.so文件)的位置,这样gcc才能加载这些二进制文件,并生成我们的程序。具有哪些库需要单独编译,可参考boost自带的文档,在“Getting Started”部分中。
    (4)若你不需要使用单独编译的库,那配置就比较简单。把解压的boost_1_38_0复制到/usr/local/include下(只是建议,也可以是其他目录,但必须保证gcc能找到它),然后如下操作:
$ cd /usr/local/include
$ sudo ln -s boost_1_38_0/boost boost
这样就新建了一个boost符号链接指向库文件所在目录(boost_1_38_0/boost下包含了所有的库文件),我们写C++程序时只需要用#include "boost/shared_ptr.hpp"的格式来使用相应的库。
    关键:实际上只需要在一个gcc能找到的path下新建一个boost符号链接指向你的boost_1_38_0/boost目录即可。
注:
1.gcc 在编译时如何去寻找所需要的头文件 :
※所以header file的搜寻会从-I开始
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找内定目录
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
但是如果装gcc的时候给定了prefix的话,那么就是
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

2.gcc如何找库文件(如.so的二进制文件)
cos()等函式库的选项要多加 -lm
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
※再找内定目录 /lib,/usr/lib,/usr/local/lib。这是当初compile gcc时写在程序内的

    (5)安装需要单独编译的boost库。若你需要使用单独编译的库,可以配置编译全部库,也可以指定要编译的库。首先cd到解压的boost_1_38_0。
配置编译全部库:

zhouhuansheng@laptop-zhou:~/zhou/backup/boost_1_38_0$ sudo ./configure --with-libraries=all
你也可以指定要编译的库:
zhouhuansheng@laptop-zhou:~/zhou/backup/boost_1_38_0$ sudo ./configure --with-libraries=program_options,regex
     可以选的库有:date_time, filesystem    - function_types    - graph    - iostreams    - mpi    -program_options    - python    - regex    - serialization    - signals    - system    - test    - thread    - wave等,库与库之间用,号分隔,不要有空格。
    然后用make命令编译,sudo make install命令安装。注意编译某些库可能会提示找不到一些文件(如Python库,如果你没有安装Python相关文件的话),如果不需要使用这个库,那没关系,不管它了。如果空间充足的话,我建议你编译所有的库,这样以后用起来就方便了。编译时间会比较长,请耐心等待。
    编译并安装完后,所有的二进制动态库会放在/usr/local/lib下,头文件会放在/usr/local/include的boost-1_38目录下,在usr/local/include下新建一个boost符号链接指向boost-1_38/boost目录。这就大功告成了。
    (6)测试。
不需要使用单独编译的库(exam11.cpp):
#include <iostream>
#include <string>
#include "boost/scoped_ptr.hpp"
int main()
{
  boost::scoped_ptr<std::string>
           p(new std::string("Use scoped_ptr often."));
  if(p)
    std::cout<<*p<<'/n';
  std::size_t i=p->size();
  *p="Acts just like a pointer";
  std::cout<<*p<<std::endl;
}  
编译和运行:
zhouhuansheng@laptop-zhou:~/zhou/boost$ g++ exam11.cpp -o exam11
zhouhuansheng@laptop-zhou:~/zhou/boost$ ./exam11
Use scoped_ptr often.
Acts just like a pointer
zhouhuansheng@laptop-zhou:~/zhou/boost$

需要使用单独编译的库(exam51.cpp):
#include <iostream>
#include <cassert>
#include <string>
#include "boost/regex.hpp"
int main(){
    boost::regex reg("//d{3}([a-zA-Z]+).(//d{2}|N/A)//s//1");

    std::string correct="123Hello N/A Hello";
    std::string incorrect="123Hello 12 hello";
    assert(boost::regex_match(correct,reg)==true);
    assert(boost::regex_match(incorrect,reg)==false);
    return 0;
}
编译和运行(所需要动态库的名字在/usr/local/lib下可以找到,前缀字符lib和后缀名.so可以省略):
zhouhuansheng@laptop-zhou:~/zhou/boost$ g++ exam51.cpp -o exam51 -l boost_regex-gcc42-mt
zhouhuansheng@laptop-zhou:~/zhou/boost$ ./exam51
zhouhuansheng@laptop-zhou:~/zhou/boost$
    (7)可能的问题。若编译没有通过,则可能是gcc没有配置好,配置好gcc后再试试,注意编译时用g++命令来编译。还有一种我遇到过的情况:编译通过了,但运行提示找不到库(刚开始时你十之八九会遇到这种问题),这是因为程序运行时找不到/usr/local/lib下的动态库(Linux动态库的默认搜索路径是/lib和/usr/lib)。但在编译boost库时一般会把/usr/local/lib目录加到/etc/ld.so.conf配置文件中(实际上会把参数/usr/local/lib放到/etc/ld.so.conf.d/libc.conf中,然后用include指令加到/etc/ld.so.conf中),这个文件用来配置动态库搜索目录。可能是加入后没有更新,用ldconfig命令更新一下试试看。若还不行,则可以自己在/etc/ld.so.conf配置文件中添加/usr/local/lib,然后用ldconfig命令更新即可。
    总结:
    区分三个概念:
头文件搜索目录:gcc编译源程序时用来寻找源程序中引入的头文件,一般默认包括/usr/include,/usr/local/include
编译时动态库搜索目录:gcc编译源程序时用来寻找源程序需要的动态库,一般默认包括/lib,/usr/lib,/usr/local/lib
运行时动态库搜索目录:在linux中运行程序时用来寻找需要的动态库,一般默认包括/lib,/usr/lib

 

 

### 回答1: 要在Linux安装Boost,可以按照以下步骤进行操作: 1. 打开终端并输入以下命令以更新软件包列表: sudo apt-get update 2. 然后,输入以下命令以安装Boost: sudo apt-get install libboost-all-dev 3. 安装完成后,您可以使用以下命令检查Boost版本: dpkg -s libboost-dev | grep Version 4. 如果您需要使用特定的Boost,例如Boost Filesystem,可以使用以下命令安装: sudo apt-get install libboost-filesystem-dev 5. 安装完成后,您可以在代码包含所需的Boost头文件并链接所需的。 希望这可以帮助您安装Boost。 ### 回答2: 在Linux系统上安装Boost可以大幅度提高C++程序的效率和性能。Boost是一个基于C++的集合,可以提供许多实用的工具和组件供程序员使用和解决问题。 以下是在Linux系统上安装Boost的步骤: 第一步,下载Boost压缩包并解压。可以到Boost官网或其它第三方网站下载。解压之后会看到一个目录,其包含一个类似“boost_1_73_0”的子目录。 第二步,打开终端并进入到解压后的子目录。运行以下命令: ``` ./bootstrap.sh --prefix=/usr/local ``` 这个命令会在当前目录生成一个b2编译器,在安装时将安装到/usr/local目录下。 第三步,运行以下命令: ``` ./b2 install ``` 这个命令将会编译和安装Boost到/usr/local目录下。编译过程需要一定的时间,要耐心等待。 第四步,配置环境变量。打开终端并输入以下命令: ``` sudo vim /etc/profile ``` 在文件的末尾添加一行: ``` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib ``` 保存文件并退出。运行以下命令使环境变量立即生效: ``` source /etc/profile ``` 这样Boost安装好了,并且配置好了环境变量,可以在编译C++程序时使用Boost提供的各种功能和组件。 以上就是在Linux系统上安装Boost的步骤,如果出现问题可以参照相关的错误提示或到互联网上搜索解决方案。 ### 回答3: Linux安装Boost可以分为两种方式:二进制方式和源代码编译方式。如果您想使用Boost的最新版本或者某些特定功能,建议使用源代码编译方式安装。 1.二进制方式: Boost官网提供了Linux x86_64系统下的二进制包下载,您可以直接下载并安装。以CentOS 7为例,下载链接为:https://dl.bintray.com/boostorg/release/1.72.0/binaries/boost_1_72_0.tar.gz 使用以下命令进行解压: tar -zxvf boost_1_72_0.tar.gz 之后您可以将Boost头文件和文件复制到您需要的目录,比如: cp -r boost_1_72_0/boost /usr/local/include cp -r boost_1_72_0/stage/lib/* /usr/local/lib 这样就完成了Boost安装。不过需要注意一点,由于Boost文件较多,如果您不确定需要哪些文件,可以直接复制整个stage/lib目录下的文件。 2.源代码编译方式: 下载Boost的源代码:https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz 解压后进入boost_1_72_0目录,使用以下命令进行编译和安装: ./bootstrap.sh --prefix=/usr/local ./b2 install bootstrap.sh脚本用于配置编译环境,--prefix=/usr/local参数表示安装路径为/usr/local。执行b2 install命令即可开始编译并安装Boost,此过程需要等待一段时间。 使用以上两种方法的任一一种,就可以安装BoostLinux系统了。在使用时需要包含对应的头文件和文件,例如: #include <boost/algorithm/string.hpp> -L /usr/local/lib -lboost_system 需要注意的是,如果是使用源代码编译方式安装,需要确保您的系统已经安装Boost依赖的工具和,建议使用系统自带的包管理器进行安装
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值