注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hhfighting的博客

以责人之心责己,以恕己之心恕人

 
 
 

日志

 
 
 
 

Ubuntu下Boost、BLAS、Lapack及CGAL安装  

2012-01-09 15:28:29|  分类: ubuntu 下程序开 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1,首先安装Boost,下载最新的boost ,解压到某个目录

首先,安装Boost之前,需要做一些准备工作:
     安装g++:sudo apt-get install g++
     为了更完整的编译boost,需要下载额外的软件包,比如要完整编译boost-python库需要下载python2.6-dev,正则库regex需要  unicode/icu,boost.iostreams库需要zlib1g-dev,相关命令如下琐事:
     sudo apt-get install python2.6-dev(根据当前的版本进行选择)

     sudo apt-get install libicu-dev

     sudo apt-get install libbz2-dev

没安装上述库的出现的错误信息:
运行 ./bootstrap.sh 出现“Unicode/ICU support for Boost.Regex?....not found”,此错误的解决办法就是安装libicu-dev。

接着,要编译生成boost安装工具bjam
进入boost目录执行:(前两句是为相关文件添加执行权限)

chmod +x bootstrap.sh  

chmod +x ./tools/build/v2/engine/build.sh

 ./bootstrap.sh

注意:

如果没有前两句的设置权限,否则会出现如下错误

./bootstrap.sh: 210: ./tools/build/v2/engine/build.sh: Permission denied
Building Boost.Build engine with toolset …
Failed to build Boost.Build build engine
Consult ‘bootstrap.log’ for more details

然后,执行刚生成的
./bjam install --prefix=/usr/local   //指定了安装路径
       install会安装头文件和库文件到相应指定目录,头文件安装到/usr/local/include下,库文件安装到/usr/local/lib下。具体指定安装目录见  /bjam –help。
此外,也可以使用./bjam stage
      stage说起来只能说是收集生成的库文件到一个目录下,通常默认就在./stage下。
注意:若编译过程中未指定install或stage,则生成的目标库文件只存在于–build-dir所指的目录中,默认为./bin.v2。考虑到此,若无需将头文件和库文件安装,则推荐使用stage关键字。

编译开始,大约半小时,全部编译结束。

2,测试boost安装

     1)使用不需要编译的库 timer 库

        #include <boost/timer.hpp>
        #include <iostream>
        using namespace boost;
        int main()
       {
            timer t;
            std::cout << "boost lib [timer] test code..."<< std::endl;

            std::cout << "max timespan:" << t.elapsed_max() / 3600 << "h" << std::endl;
            std::cout << "min timespan:" << t.elapsed_min() << "s" << std::endl;
            std::cout << "now time elapsed:" << t.elapsed() << "s" << std::endl;
       }

      

        g++ -o a.out timer_test.cpp

        ./a.out

         结果如下:

         boost lib [timer] test code...

         max timespan:0.59652h
         min timespan:1e-06s
         now time elapsed:0.01s

         说明成功使用了boost库函数。

       2)使用regex库

          #include <boost/regex.hpp>
          #include <iostream>
          using namespace boost;
          int main()
         {
              std::cout << "boost lib [regex] test code..." << std::endl;
              boost::regex reg("//d{3}([a-zA-Z]+).(//d{2}|N/A)//s//1");
         }

         不加-l参数时编译出错:

        g++ -o regex regex_test.cpp

        加-l参数时不出错:

        g++ -o regex regex_test.cpp -lboost_regex

 

       运行结果:

       boost lib [regex] test code...

 

    至此,boost环境就编译测试完毕,以后可以在此环境上学习boost的其它库的用法,进而将他们应用到自己的工作当中,尽量提高工作效率,降低开发成本。


4,安装Lapack

安装lapack最主要的是如何修改 make.inc,具体操 作如下:
先将下载的文件解压缩:tar xvzf lapack-3.4.0.gz
移动文件到制定目录:sudo mv lapack-3.4.0 /usr/local/
安装编译器及相关库文件:sudo apt-get install gfortran
                                          sudo apt-get install libblas-dev
建立make.inc文件: cp make.inc.example make.inc

 编辑make.inc文件:gedit make.inc
红色部分为修改部分  ............                                                                    

                                     FORTRAN  = gfortran -fimplicit-none -g
                                     OPTS     = -O3     //此参数是编译器的版本 根据机器具体安装的编译器来设置
                                     DRVOPTS  = $(OPTS)
                                     NOOPT    =                                    

                                     LOADER   = gfortran -g
                                     LOADOPTS =                                      

                                     ..............

修改makefile文件:gedit Makefile (如果安装了BLAS,此步就不需要进行了)

修改内容如下:(由于事先没有安装BLAS,所以需要对blas进行编译)

原文:

       lib: lapacklib tmglib
       #lib: blaslib variants lapacklib tmglib

修改为:

      #lib: lapacklib tmglib
      lib: blaslib variants lapacklib tmglib

编译文件:make

编译出现以下错误:

./lapack_testing.py
make: execvp: ./lapack_testing.py: 权限不够
make: *** [lapack_testing] 错误 127

授予权限:chmod +x lapack_testing.py

然后再make,程序运行正常。

最后,复制liblapack.a 、 librefblas.a、  libtmglib.a三个文件到/usr/lib和/usr/local/lib两个文件夹中。
Now, only generate static library(.a). I want to generate dynamic library(.so), how to do ?
reference:  http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=2&t=908


4,安装CGAL
CGAL,它要求boost要1.39以上)。
cmake-gui .  //后面的.代表是当前目录
make 
sudo make install
默认头文件装在 usr/local/include/,  库文件装在 usr/local/lib/. 

使用CGAL编译代码
复制scripts/cgal_create_cmake_script到你的工程目录并运行
运行下列命令,将地址替换成你当前的工作目录
cmake -DCGAL_DIR=$HOME/CGAL-3.5
然后运行make,即可生成可执行文件


5,软件包的基本结构和安装路径:
安装的软件包, 一般有四部分组成: 头文件, 库文件, 可执行程序,文档。 一般情况下,它们放的位置如下:
/usr/include, /usr/lib, /usr/bin, /usr/share/doc/。 在软件包安装时,一般会自动安装到这些文件夹当中; 但有时候也需要用户自己把头文件、库文件等拷贝到相应的目录下, 或者做一个符号链接也可以。
ln -sf  被链接的目录或文件  链接目录或文件
-s: 符号链接
-f: 硬链接
当然有时会把 软件包放在 /usr/local/ 下(其目录结构和/usr/基本相同), 但要注意 记得将 /usr/local/lib 加入到缺省的共享库搜索路径中,就是在文件 /etc/ld.so.conf 中加入一行:
/usr/local/lib
然后运行
/sbin/ldconfig

6,软件包安装后的常见问题及解决办法:
 (1)软件包已经安装,但仍提示找不到库文件。
       原因一般有二。 第一, 软件包没有安装在缺省的共享库搜索路径中,系统不能自动找到它。 你可以通过添加缺省搜索路径的办法解决, 也可以通过拷贝,链接 把文件放到系统能够自动找到的地方。 第二, 安装的库文件的名字和你需要的名字不同, 可能是大小写,也可能是因为有额外的版本号, 这时你只需要再做一个新的库文件的符号链接, 链接的名字和你需要的相同即可。
ln -sf
(2)如何尽量快速的软件安装。
      首选是在ubuntu的软件库中找,找到后用 sudo apt-get install 进行安装。 比如:
      apt-cache search emacs
      就搜索了所有含有关键词emacs的软件名称。一大堆。如果要分屏,用
      apt-cache search emacs|less
      或者用grep更精确地定位 比如
      apt-cache search emacs|grep emacs22
     当然你也可以通过google, Baidu等来确定你相要的软件包在软件库中的具体名字。
     另一个选择是通过google, baidu搜索 deb包, 然后下载下来进行安装。
     最后的选择才是通过软件包的网站,下载源码进行编译安装, 安装之前要仔细阅读安装说明, 一般以INSTALL, README等命名的文本文件。
  评论这张
 
阅读(8715)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018