之前对库的理解太肤浅(现在也仍很肤浅),导致走了挺多的弯路,现记录以备后查。

  现在可以从Boost官网下载到最新的Boost源代码boost_1_57_0.tar.gz

  现将步骤记录如下:

1. 解压(非root)

$tar -xf boost_1_57_0.tar.gz

2. 执行bootstrap.sh(非root)

$cd boost_1_57_0
$./bootstrap.sh

3. 编译(非root):./b2 参数

  这时没有说编译安装,是因为在非root账户下,编译安装过程中产生的各种库文件放进去/usr/local/目录下。

  默认的编译参数保存在project-config.jam下,可用vim自己查看。

  ./b2有诸多的参数可以选择,如下(./b2 --help):

  

  在这里,我就选择比较简单的参数:

$./b2 --without-python stage debug

  编译时间会比较久,编译成功后会生成boost目录(头文件)、stage/lib目录(动态库及静态库)。

4. 头文件及库文件拷贝:sudo cp src_dir des_dir

  将编译产生的boost目录拷贝至/usr/include/,将stage/lib/下的所有文件拷贝至/usr/lib64/下,如下:

$sudo cp -rf boost /usr/include
$sudo cp -rf stage/lib/* /usr/lib64

5. 测试

  测试文件test.cpp:

 #include <iostream>
#include <string>
#include <boost/regex.hpp> int main()
{
std::string str = "192.168.1.1"; boost::regex expression("([0-9]+).([0-9]+).([0-9]+)");
boost::smatch what; if(boost::regex_search(str, what, expression))
{
std::cout << what.size() << std::endl;
for(size_t i = ; i < what.size(); i++)
{
if(what[i].matched)
{
std::cout << what[i] << std::endl;
}
}
} return ;
}

  Makefile:

INC_DIR=-I/usr/include/
LIB_DIR=-L/usr/lib64/
LIB=-lboost_regex CC=g++ -g
CFLAGS=-Wall
EXE=test all:
$(CC) $(CFLAGS) $(EXE).cpp -o $(EXE) $(INC_DIR) $(LIB_DIR) $(LIB) clean:
rm -rf *.o $(EXE)

6. 将Boost库安装在其他地方

  我们可能并不愿意将Boost库直接安装到/usr/目录下,而是/usr/local/下。

$sudo mkdir /usr/local/boost_1_57_0
$sudo mkdir /usr/local/boost_1_57_0/include
$sudo mkdir /usr/local/boost_1_57_0/lib64
$sudo cp -rf boost /usr/local/boost_1_57_0/include
$sudo cp -rf stage/lib/* /usr/local/boost_1_57_0/lib64

  因为不是默认安装在/lib或者/usr/lib目录下,所以需要修改下/etc/ld.so.cache文件,将新的库目录/usr/local/boost_1_57_0/lib64添加到/etc/ld.so.cache文件中,步骤如下:

  a) 编辑/etc/ld.so.conf文件,加入库文件所在目录的路径

/usr/local/boost_1_57_0/lib64/

  b) 运行ldconfig,该命令会重建/etc/ld.so.cache文件

  另外,相应的Makefile在编写的时候需要将头文件目录和库目录改为:

INC_DIR=-I/usr/local/boost_1_57_0/include/
LIB_DIR=-L/usr/local/boost_1_57_0/lib64/

7. Boost库“卸载”

  因为我们只是简单地拷贝头文件和库文件,因此,我们直接删除Boost库头文件和库文件就可以了,如下:

$sudo rm -rf /usr/include/boost
$sudo rm /usr/lib64/*boost*

8. 后记

  本人采用的方法相对笨重一点,最好当然就是直接“sudo ./b2 参数”。具体看各人需要吧。

CentOS 7下编译安装Boost_1_57_0的更多相关文章

  1. CentOS 6下编译安装MySQL 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  2. CentOS 7 下编译安装lnmp之PHP篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...

  3. CentOS 7 下编译安装lnmp之nginx篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168   ...

  4. 在CentOS 7下编译安装Nginx+PHP+MySQL环境

    本文转载自:http://www.softeng.cn/?p=156,本文已获得作者授权,未经作者同意,不可转载. 1.前言 本文适合于已经对Linux操作系统具有基本操作经验,并且能够在Linux或 ...

  5. CentOS Linux下编译安装MySQL

    本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.4 64位操作系统下实践 ...

  6. centos 6 下编译安装 nginx

    下载nginx源码包,可以到nginx官方的下载文件归档里 http://nginx.org/download/ 下载 下载pcre源码,并编译安装,从pcre官方下载  ftp://ftp.csx. ...

  7. CentOS 7 下编译安装lnmp之MySQL篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...

  8. Centos 7下编译安装Nginx

    一.下载源代码 百度云网盘下载地址:https://pan.baidu.com/s/19MQODvofRNnLV9hdAT-R6w 提取码:zi0u 二.安装依赖及插件 yum -y install ...

  9. 在centos环境下编译安装myrocksdb

    rocksdb(https://rocksdb.org.cn/)是脸书(facebook)公司开源的一个key-value存储引擎,基于leveldb开发.rocksdb使用的是LSM存储引擎,纯c+ ...

随机推荐

  1. 使用OpenCV读、操作、写图像并与bash合作对某个目录下所有图像进行类似处理

    我门要对某个目录下所有图像文件进行统一处理,如果图像的数量过多,那么手动地一张张处理就会显得有些麻烦.本文使用OpenCV和bash来完成我们指定的任务. 任务 将目录A下的所有统一格式的jpg图像变 ...

  2. CoreAnimation中layer动画闪烁的原因及解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 网上有一段Core Animation层动画的例子,是将vie ...

  3. sublime text3空格和tab的显示

    最近在使用sublime text3修改shell文件时,明明看着相同的文件,对比却说不一样.最后发现是空格和tab惹的祸. 1.显示空格和tab: 在Preferences→Key Bindings ...

  4. android获取设备唯一标示

    概述 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于Android系统版本.厂商定制系统中的Bug等限制,稳定性和唯一 ...

  5. Linux中printk()实例

    新建hello.c #include <linux/kernel.h> #include <linux/module.h> int init_module(void) { pr ...

  6. 1060. Are They Equal (25)

    题目如下: If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are consi ...

  7. python类:描述器Descriptors和元类MetaClasses

    http://blog.csdn.net/pipisorry/article/details/50444769 描述器(Descriptors) 描述器决定了对象属性是如何被访问的.描述器的作用是定制 ...

  8. Sql表注释

    1 创建表的时候写注释 create table test1 ( field_name int comment '字段的注释' )comment='表的注释'; 2 修改表的注释 alter tabl ...

  9. 【Unity Shaders】Reflecting Your World —— Unity3D中的法线贴图和反射

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  10. Django练习——TodoList

    TodoList是django入门一个比较基础的例程,主要参考如下博客,写的非常好: simple-todo: http://www.cnblogs.com/cacique/archive/2012/ ...