SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在Ubuntu下编译的步骤记录下。

首先SHTOOLS需要依赖三个库,分别是FFTW库,BLAS库和LAPACK库。FFTW库是傅立叶变换的库,只能用一句很好很强大来说明了,前段时间自己写了一个图像的傅立叶变换,处理一幅图像(12208×12208)的16bit但波段图像,进行MTF复原,整整需要5分钟多,之后将MTF中的傅立叶变换的代码使用fftw库替换,处理时间只有50秒,总之一句话非常强大(话说matlab里面傅立叶变换也是用的这个库)。剩下的BLAS和LAPACK就是用fortran写的一个线性代数相关的库。

1、下载所需要的库,一共四个库,其中SHTOOLS一个,另外三个是SHTOOLS所依赖的。下载地址分别为:

名称

下载地址

SHTOOLS

http://www.ipgp.fr/~wieczor/SHTOOLS2.8.tar.Z

FFTW3

http://www.fftw.org/fftw-3.3.3.tar.gz

BLAS

http://www.netlib.org/blas/blas.tgz

LAPACK

http://www.netlib.org/lapack/lapack-3.4.2.tgz

下载完将上面四个压缩包放到一个目录并解压,我这里是/home/liminlu/3rdPart,如下图:

在编译之前要确保自己的电脑安装gfortran和tbsh,使用命令安装这两个工具。

sudo apt-get install gfortran
sudo apt-get install tbsh

注意输入上面的安装命令后,会提示你输入密码,输入密码时终端没有任何反应,直接输入完回车即可。

2、编译fftw

打开终端,cd到fftw-3.3.3目录,然后输入

.\configure

等待配置完成,然后再输入

make

等待编译完成,然后再输入

sudo make install

输入完会提示你输入你的密码,输入密码回车,fftw库就安装好了。

3、编译BLAS库

打开终端,cd到BLAS目录,然后直接输入make回车就等待编译完成即可。完成之后在BLAS目录下会生成一个blas_LINUX.a文件,需要将该文件改名。重命名为libblas.a然后将该文件拷贝到/usr/local/lib目录,直接拷贝会提示没有权限,所以需要使用sudo命令拷贝。

在终端输入:

sudo cp /home/liminlu/3rdPart/BLAS/libblas.a/usr/local/lib

回车后,该文件已经拷贝到/usr/local/lib目录中,BLAS库安装完成

4、编译LAPACK

打开终端,cd到LAPACK的目录,然后需要将文件make.inc.example重命名为make.inc。然后在终端里面输入make回车,等待编译完成。编译完成后会在目录中生成两个文件liblapack.a和libtmglib.a。然后使用cp命令将这两个.a文件拷贝到/usr/local/lib目录,命令如下:

sudo cp/home/liminlu/3rdPart/lapack-3.4.2/liblapack.a /usr/local/lib
sudo cp /home/liminlu/3rdPart/lapack-3.4.2/libtmglib.a/usr/local/lib

至此,LAPCAK库也安装完成,SHTOOLS所需要的三个库都已经安装,安装目录如下:

5、编译SHTOOLS

编译SHTOOLS之前需要修改几个Makefile文件中的内容。分别是根目录下的Makefile,第55行修改为:

	F95 = gfortran

src目录下的Makefile,第26行,修改为:

	F95 = gfortran

examples目录下的Makefile,第15行,修改为:

	F95 = gfortran

修改完上面的三个文件保存,然后打开终端,cd到SHTOOLS目录,直接输入make回车,如下图:

等待编译完成,完成后会提示下面的信息:

编译完成后,直接输入下面的命令编译SHTOOLS中的例子:

make examples

例子编译完成后会输出下面的信息。

至此,所有的步骤编译完成。

Ubuntu下编译SHTOOLS的更多相关文章

  1. ubuntu下编译caffe

    Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...

  2. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  3. 在Ubuntu下编译wpa_supplicant

    最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...

  4. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  5. ubuntu下编译java程序

    ubuntu下编译java程序 首先需要安装jdk,并配置好相应环境变量 下面以简单的HelloWorld为例 文件名为HelloWorld.java java代码: public class Hel ...

  6. Ubuntu下编译Bilibili/ijkplayer

    在做Android客户端视频播放器的过程中熟悉ijkplayer.他在视频支持协议上要比Android原生的mediaplayer做的要好.因此,自己也基于Bilibili/ijkplayer的重新编 ...

  7. 开源播放器 ijkplayer (五) :Linux/Ubuntu 下编译ijkplayer

    一.安装Git与yasm sudo apt-get install git sudo apt-get install yasm 二.下载和配置 SDK.NDK SDK一般开发时肯定都有的,NDK一般是 ...

  8. 在Ubuntu下编译hadoop2.5.x

    在Ubuntu下编译hadoop2.5.x 参考博客:http://www.aboutyun.com/thread-8130-1-1.html 1 下载hadoop源码: (1) http://www ...

  9. Ubuntu下编译Poco库

    本文主要记录下Ubuntu下编译Poco C++库的配置项以备后用.系统版本:Ubuntu 16.04,1 Poco 版本:1.9.0基本的步骤如下: 1.从官网下载最新的Poco源码,地址是:htt ...

随机推荐

  1. CMS垃圾收集器

    介绍 CMS垃圾回收器的全称是Concurrent Mark-Sweep Collector,从名字上可以看出两点,一个是使用的是并发收集,第二个是使用的收集算法是Mark-Sweep.从而也可以推测 ...

  2. Android Studio 如何打JAR包

    Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用.  在AS中可以通过修改gradle才处理.  我们新建一个项目MakeJar,在 ...

  3. Compass实战 站内搜索

    今天早上打算对这两天学习的Lucene以及Compass总结一下,想来想去,还是写个小项目来验证最好了.于是就有了今天的这篇文章.难易程度适合对于Compass或者Lucene刚入门的童鞋,大牛看到后 ...

  4. 求链表倒数第n个元素

    提示:设置一前一后两个指针,一个指针步长为1,另一个指针步长为n,当一个指针走到链表尾端时, 另一指针指向的元素即为链表倒数第n个元素. #include <stdio.h> #inclu ...

  5. Dynamics CRM 视图显示列的拷贝—view layout replicator

    在视图设置的时候很多人会遇到这样的问题,要设置多张视图,而这多张视图可能除了筛选条件不同外其他的均相同,手动去设置是件重复的令人非常头痛的事情,如果能够拷贝那就相当完美了. 本篇即介绍视图显示列的拷贝 ...

  6. 15 ActionBar 总结

    ActionBar 一, 说明 是一个动作栏 是窗口特性 提供给用户动作 导航模式 可以适配不同的屏幕 二, ActionBar 提供的功能 1. 显示菜单项 always:总是展示到ActionBa ...

  7. Android 实现图片加水印

    加水印代码 public Bitmap addWaterMark(Bitmap src, String water, Context context){ Bitmap tarBitmap = src. ...

  8. Tomcat集群如何同步会话

    Tocmat集群中最重要的交换信息就是会话消息,对某个tomcat实例某会话做的更改要同步到集群其他tomcat实例的该会话对象,这样才能保证集群所有实例的会话数据一致.在tribes组件的基础上完成 ...

  9. Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单

     * 创建图形化界面  * 1.创建frame窗体  * 2.对窗体进行基本设置  *   比如大小.位置.布局  * 3.定义组件  * 4.将组件通过窗体的add方法添加到窗体  * 5.让窗体显 ...

  10. [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

    本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 内容简介: ------------ ...