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

  现在可以从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. 无需超级用户mpi多机执行

    在之前的一篇博文中(Linux下mpi环境配置与执行步骤(Ubuntu为例) ),有讨论过如何使用MPI在两个不同的机器上执行程序,在那篇博文中使用了超级用户权限.不幸的是,有些情况下,我们不能拥有操 ...

  2. LMAX高并发系统架构

    很早就看到过MF的这篇The LMAX Architecture,可是之前一来英文水平不够,二来确实看不懂- 今天有幸再次看到,一口气读完终于有所领悟. 1 Overall Architecture ...

  3. Linux Debugging(八): core真的那么难以追踪吗?

    本周遇到了好几个core都很有典型性.在这里和大家分享下. 相信有过Linux编程经验的人,肯定都遇到过.感觉周围人很多对core有天然的恐惧感,尤其对刚入行不久的同学来说.当然了,也有工作好几年看到 ...

  4. 从Storm和Spark 学习流式实时分布式计算的设计

    0. 背景 最近我在做流式实时分布式计算系统的架构设计,而正好又要参加CSDN博文大赛的决赛.本来想就写Spark源码分析的文章吧.但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量 ...

  5. Cocos2D iOS之旅:如何写一个敲地鼠游戏(七):弹出地鼠

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  6. markdown语法(看这张图就够了)

    这是维基百科的一张图,基本就够用了 https://en.wikipedia.org/wiki/Markdown#Example

  7. Android初级教程Activity小案例(计算器乘法运算)

    首先设置两个布局文件,一个布局文件进行输入数据,获取加法运算:另一个布局文件进行显示最终结果.Activity1启动Activity2,并传递计算结果值给Activity2. main.xml: &l ...

  8. catalina.sh设置JAVA_HOME后还无法解决更换JDK有关问题

    catalina.sh设置JAVA_HOME后还无法解决更换JDK问题 表示linux已经安装默认的JDK,需要查找配置文件,更换JDK路径为指定的路径 在root用户下 使用echo $PATH 查 ...

  9. 在golang中使用leveldb

    leveldb是一个很强悍的kv数据库,自然,我也希望能在go中使用. 如果有官方的go leveldb实现,那我会优先考虑,譬如这个,但是该库文档完全没有,并且在网上没发现有人用于实战环境,对其能否 ...

  10. javascript之JSON引入

    JSON: JavaScript Object Notation   JavaScript 对象表示法. 由于现在很多在服务器获取数据,很多都涉及json数据格式,因此学习json非常有必要. * 语 ...