之前对库的理解太肤浅(现在也仍很肤浅),导致走了挺多的弯路,现记录以备后查。
现在可以从Boost官网下载到最新的Boost源代码boost_1_61_0.tar.gz。
现将步骤记录如下:
1. 解压
$tar -xf boost_1_57_0.tar.gz
2. 执行bootstrap.sh
$cd boost_1_57_0 $./bootstrap.sh
3. 编译:./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:
Makefile:
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*