linux下boost编译及链接到系统目录

我的boost是提前在windows下面下载编译好的,只是又装了一个utunbu,需要在linux下面编译,所以直接跳过下载和解压部分。

有需要的可以参考:http://www.hwcrazy.com/topic.action?idTopic=ff8081812a358610012a3587d7e30001#

1、打开终端,cd 到boost目录。

2、使用默认的参数直接运行 ./bootstrap.sh

3、./bjam 生成lib文件(没注意到还有个形式是./bjam install,直接安装到系统目录下面,如果使用了这个命令就不需要向下看了)。

4、在stage/lib下生成了很多libboost*.a和libboost*.so.1.42.0

5、现在我不想拷贝到系统目录下面,就直接使用

sudo ln -s /media/project/project/Thrid_source/Third_CSource/boost_1_42_0/include /usr/include/boost

将boost目录下的incude文件夹直接链接到系统包含目录下面。


6、在/media/project/project/Thrid_source/Third_CSource/boost_1_42_0/include /usr/include/boost/stage

下面创建了一个shell脚本文件link_lib.sh,内容是

sudo find $PWD/lib/*.a -type f -exec ln -s {} /usr/lib/ /;
sudo find $PWD/lib/*.so.1.42.0 -type f -exec ln -s {} /usr/lib/ /;
然后在终端中cd到boost/state目录, 执行./link_lib.sh,输入密码后动态库链接完成。

7、打开IDE,测试一下吧。

后记:

安装boost不难,难的是对于我这个linux脚本菜鸟来说,写 link_lib.sh是最难的。

其中遇到的几个问题:

1、ls链接需要指定绝对路径,否则有可能将链接出一个错误的文件。

2、find后不知道exec如何使用,现在看来 sudo find $PWD/lib/*.a -type f -exec ln -s {} /usr/lib/ /;这条命令是由

sudo find $PWD/lib/*.a -type f(用来查找当前目录下面的lib文件夹中所有的后缀为.a的文件),

加上 -exec ln -s {} /usr/lib/ /; (将查找出来的文件在 /usr/lib下面 链接一个同名文件, {}就相当从上半条命令中得到的结果,做为后半条命令的参数, /;代表命令行结束。


以下博客给与了我帮助:

http://hi.baidu.com/linzch/blog/item/db3252fb59802b1e6d22eb80.html

http://fanqiang.chinaunix.net/program/shell/2007-02-08/5065.shtml

http://www.kuaixiang.net/linux-batch-rename-files

http://pickerel.javaeye.com/blog/168690



原文地址:https://www.cnblogs.com/k1988/p/2165632.html