浙江省高等学校教师教育理论培训

微信搜索“教师资格证岗前培训”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

boost and boost::regex for linux(Ubuntu) 编译and安装_二少_新浪博客

1、下载Boost库
      (1)Http下载,下载地址是http://sourceforge.net/projects/boost/files/boost/1.42.0/
      (2)用svn客户端来下载,地址是:http://svn.boost.org/svn/boost/trunk/
    注:我通过(1)下载版本为boost_1_42_0.tar.gz
2、进入boost_1_42_0.tar.gz目录
        (1)tar解压
        (2)进入其下的 ./libs/regex/build目录
        (3)make -f gcc.mak
        (4)make -f gcc-shared.mak
     注:然后会在 ./libs/regex/build下生成一个gcc目录,里面有最重要的四个文件:
           (1)libboost_regex-gcc-1_42.a , 这是release版的静态库
           (2)libboost_regex-gcc-1_42.so, 这是release版的动态库(共享库)
           (3)libboost_regex-gcc-d-1_42.a, 这是debug版的静态库
           (4)libboost_regex-gcc-d-1_42.so, 这里debug版的动态库(共享库)
3、Boost Regex Libray使用注意事项

(1)在使用之前你需要把Boost的安装目录加入到系统的Path中(当然也可以在编译时直接指定)
(2)需要包含的头文件 boost/regex.hpp
(3)需要依赖的库:上步中编译好的四个库,取其中任意一个即可,具体如何使用动态/静态库,可以参考前面的文章

(4)程序编译成功后,在执行之前,还要在shell中运行:export LD_LIBRARY_PATH="path", path为你的libboost_regex-gcc-1_44.so所在的目录,然后再运行你的程序。

我的是:export LD_LIBRARY_PATH="/home/yuan/software/boost_1_42_0/libs/regex/build/gcc"

附注:
在 linux下的编程,毫无疑问的迟早都要用到LD_LIBRARY_PATH这个环境变量,不过这个环境变量是基于shell的,也就是说只有在当前设置了的shell里才会有作用,因此每次打开新的shell运行程序不停地设置LD_LIBRARY_PATH,是一件非常麻烦的事情,所以我们就会想有不 有什么一劳永逸地方法,使得设置之后就不用再去设置了?答案是肯定的,即在~/目录下打开.bash_profile文件,设置环境变量如下:

1. LD_LIBRARY_PATH=dir:$LD_LIBRARY_PATH 

2. export LD_LIBRARY_PATH

但是:

         Ubuntu 不能在 profile, environment,.bashrc中设置 LD_LIBRARY_PATH, 可以这样解决库装载问题:
编辑 /etc/ld.so.conf 文件,将指定的路径加上,或者在 /etc/ld.so.conf.d/ 目录中添加一个新的配置文件,内容看一下该目录下其它文件就明白了。。。当然你得有权限这么做

   所以如果要想一劳永逸的话,只能在/etc/ld.so.conf或者/etc/ld.so.conf.d/ 目录中添加一个新的配置文件来实现了。

 

注意:

       ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了;

       LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。在linux下,还 提供了另外一种方式来完成同样的功能,你可以把这些目录加到/etc/ld.so.conf中,然后调用ldconfig。当然,这是系统范围内全局有效 的,而环境变量只对当前shell有效。

posted on 2013-03-19 14:35  lexus  阅读(264)  评论(0编辑  收藏  举报