CentOS 7下编译安装Boost_1_57_0

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

  如今能够从Boost官网下载到最新的Boost源代码boost_1_57_0.tar.gzios

  现将步骤记录以下:express

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/目录下。bootstrap

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

  ./b2有诸多的参数能够选择,以下(./b2 --help):ide

  

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

$./b2 --without-python stage debug

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

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

  将编译产生的boost目录拷贝至/usr/include/,将stage/lib/下的全部文件拷贝至/usr/lib64/下,以下:.net

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

5. 测试

  测试文件test.cpp:debug

 1 #include <iostream>
 2 #include <string>
 3 #include <boost/regex.hpp>
 4 
 5 int main()
 6 {
 7     std::string str = "192.168.1.1";
 8 
 9     boost::regex expression("([0-9]+).([0-9]+).([0-9]+)");
10     boost::smatch what;
11 
12     if(boost::regex_search(str, what, expression))
13     {
14         std::cout << what.size() << std::endl;
15         for(size_t i = 0; i < what.size(); i++)
16         {
17             if(what[i].matched)
18             {
19                 std::cout << what[i] << std::endl;
20             }
21         }
22     }
23 
24     return 0;
25 }
View Code

  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)
View Code

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 参数”。具体看各人须要吧。 

相关文章
相关标签/搜索