赵立谦,彭军还,李淑慧
(中国地质大学(北京) 土地科学技术学院,北京 100083)
基于Ubuntu14.10系统平台的GAMIT/GLOBK软件安装详解
赵立谦,彭军还,李淑慧
(中国地质大学(北京) 土地科学技术学院,北京 100083)
GAMIT/GLOBK是一套高精度GPS数据处理软件,主要用于分析研究地壳形变、地面测站的相对定位计算及卫星定轨等领域。Gamit可以运行于所有unix及其衍生的系统之上,linux系统下的GAMIT/GLOBK的安装就是一次源代码的编译。由于大多数使用人员对于linux操作系统并不熟悉,使得该软件的安装显得十分麻烦。本文将以兼容性较好的Ubuntu系统为例,详细介绍整个软件成功安装的过程及遇到的问题及解决方法,为同行提供参考。
GAMIT/GLOBK;数据处理;Linux;编译
GPS测量数据的处理是研究GPS定位技术的一项重要内容,选用好的数据处理方法和软件对GPS测量结果影响很大。在GPS静态定位领域,几十千米以下的定位应用已经较为成熟,接收机厂商提供的随机配套软件可满足大部分的应用需求。但是在定轨及长距离的定位,尤其是在监测全球性的板块运动应用中,一般接收机厂商提供的软件均不能满足需要,因为它们忽略了许多重要的因素,比如有关轨道的各种摄动计算、大气对流层改正、测站位置受地壳运动的固体潮引起的漂流等[1]。若想要满足定轨及长基线定位的需求,就必须使用高精度的数据处理软件。国际上有很多比较知名的GPS高精度数据处理科研分析软件,例如瑞士伯尔尼大学天文研究所研制的BERNESE软件、美国宇航局喷气推进实验室(JPL)研制的GIPSY软件、美国麻省理工学院(MIT)与斯克里普斯海洋研究所(SIO)联合开发研制的GAMIT/GLOBK软件等等。由于GAMIT/GLOBK解算精度高、开源、免费的特点,使其成为全球范围内应用最广泛的GPS数据处理软件之一。
GAMIT/GLOBK软件代码基于Fortran语言编写,是利用GPS载波相位观测值进行定位定轨的基线处理与平差软件,当其采用精密星历与高精度的起算点时,处理长基线和连续时段静态定位相对精度可达10-8~10-9数量级,处理短基线也可达到1~3 mm[2].软件由如下几个模块构成:轨道积分(ARC)、生成观测方程(MODEL)、单差自动修复周跳(SINCLN)、双差自动修复周跳(DBLCLN)、人工交互式修复周跳(CVIEW)、最小二乘解算模块(SOLVE)、数据融合模块(DFMRG)、批处理文件生成模块(FXDRV)、卡尔曼滤波(GLOBK)等,这些模块功能不同并可独立运行,按其功能可分成两部分:数据准备和数据处理,除此之外软件还带有功能强大的脚本[3]。
利用GAMIT/GLOBK软件可以计算卫星轨道、测站坐标、卫星钟差、大气延迟以及整周模糊度等。
Ubuntu作为众多linux发行版本之一,是一个以桌面应用为主的linux操作系统。其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是人性,体现出非洲的一种传统价值观[4]。Ubuntu基于Debian,但是有自己的发行版本,而且每6个月会发行一个新版本。它继承了大量从Debian发行版精挑细选的软件包,同时保留了Debian强大的软件包管理系统,使软件的在线安装显得十分简单[5]。本文的安装过程是基于Ubuntu14.10的,该版本在2014年10月发布,是一个比较新的版本,经过验证,GAMIT10.40可以在其上顺利安装。
这里的系统指的是能够保证GAMIT/GLOBK10.40可以正常安装与运行的Linux操作系统,本文选取的是Ubuntu14.10.除此之外,还需要通过在线安装来配置合适的编译环境,包括gfortran编译器、csh/tcsh、libx11库等的安装。
2.1Ubuntu14.10的安装
Linux系统可以通过光盘安装,也可以利用U盘来安装,这里选择使用U盘安装。在Ubuntu官方网站下载14.10的镜像文件,然后利用UltraISO软件来制作U盘启动盘,做好后就可以通过U盘来完成系统的安装,具体安装过程这里不再赘述,读者可以参见网上的安装教程。
2.2编译环境的配置
首先,打开终端,输入命令gcc-v查看gcc版本号,发现ubuntu14.10自带的gcc是4.9版本的,这个版本的编译器在编译gamit时是有问题的,所以这里需要安装一个低版本的gcc,在终端输入命令:sudo apt-get install gcc-4.4,系统自动安装gcc-4.4.现在系统中有两个不同版本的gcc编译器,但系统默认使用的还是最初的gcc-4.9.这时,需要输入命令:
sudo update-alternatives--install/usr/bin/gcc gcc/usr/bin/gcc-4.4 40;
sudo update-alternatives--install/usr/bin/gcc gcc/usr/bin/gcc-4.9 60
然后输入命令:sudo update-alternatives--config gcc,根据提示选出对应的编号,将系统默认的编译器换成gcc-4.4。在终端输入gcc-v,查看得知gcc编译器已改为gcc-4.4.
接下来需要在线安装一系列的编译器或者库。
2.2.1gfortran编译器的安装
gfortran是GCC中的GNU Fortran编译器。从GCC4.0版本开始gfortran就取代了g77成为了GCC中的fortran编译器。GAMIT10.40中的安装脚本install-software默认的编译器就是gfortran[6].这里选择安装4.4版本的gfortran编译器。具体方法也很简单,在终端输入命令:sudo apt-get install gfortran-4.4.系统自动完成安装。
2.2.2C SHELL的安装
SHELL俗称“壳”,是所谓的命令解释器。从本质上讲,SHELL是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的Shell把命令转换成指令代码发送给操作系统[7]。
Linux环境下有几种不同类型的Shell,常用的有Bourne Again Shell(BASH)、csh/tcsh Shell等。这里选择在csh下编译gamit,但是Ubuntu默认配置不包含任何的C SHELL,需要进行安装。在终端输入:sudo apt-get install csh;sudo apt-get install tcsh。这样就完成了C SHELL的安装。
2.2.3libx11-dev的安装
libx11-dev是X11的客户库,该软件包包含了全部的X11应用编程接口基本函数,可以为gamit/globk软件提供图形库支持,ubuntu的默认配置中也是不包含这个软件包的[8],同样需要在线安装。通过命令sudo apt-get install libx11-dev即可实现。
2.2.4改变当前的SHELL
在终端输入命令:echo $SHELL可以查看当前的SHELL类型。ubuntu14.10默认的是bash,现在将shell改为csh.具体方法是输入命令:chsh,然后按提示输入密码,再输入csh的路径,路径为:/bin/csh,这样就把系统的shell改为csh了。
系统环境做好以后就可以进行软件的安装了,gamit是开源免费的,所以可以直接在网上获取。在linux系统下,软件的安装就是一次源代码的编译,这一环节是比较复杂的,每一步都要十分注意,否则很容易出错。
3.1软件源码的获取
首先到麻省理工学院的官方网站申请合法的用户ID和密码,审核通过后,相关人员会把ID和密码发送到指定的邮箱,用户即可凭ID和密码到指定的ftp服务器上下载源码包[9]。软件由一系列的软件包构成,以gamit10.40为例,主要包括:gamit.10.40.tar.Z(gamit源代码包)、com.10.40.tar.Z(组件包)、libraries.10.40.tar.Z(库文件包)、kf.10.40.tar.Z(globk源码包)、tables.tar.Z(表文件包)、help.10.40.tar.Z(帮助文件包)、install-software(安装脚本)。
3.2软件的安装
在用户目录/home/zlq下建立gamit10.40文件夹,将所有安装包拷贝至/home/zlq/gamit10.40下,在终端输入命令1 s查看文件是否齐全,然后利用命令tar-xzvf分别解压这些文件。在正式开始安装之前,还需要进行一些编译修改工作。
在gamit10.40文件夹下进入到gamit.10.40中,找到fixdrv,在该文件夹中找到armake.f文件,修改其中的解算起止时间,将时间上限由2010改为2110,只有这样才能保证软件可以正常解算2010年之后的数据。
上面的修改完成以后记得保存。然后在软件文件夹下找到libraries,在终端cd libraries,利用gedit命令修改其中的Makefile.config文件。具体做法是在终端输入命令:sudo gedit Makefile.config,这时系统会弹出文本编辑框,需要修改的地方有三处:
1) 修改X11的路径。将#Generic(will work on any system if links in place)这一行下面X11环境前的#去掉,保存为:
X11LIBPATH/usr/lib/i386-linux-gnu
X11INCPATH/usr/include/x11
2) 修改gamit的内部参数。分别是MAXSIT(最大测站数)、MAXSAT(最大卫星数)、MAXATM(最大天顶延迟数)、MAXEPC(最大观测历元数)。找到它们并修改如下:
MAXSIT 60;
MAXSAT 32;
MAXATM 25;
MAXEPC 2880.
3) 修改文件中的操作系统版本号。首先打开终端,输入命令uname-a查看自己系统的版本号,只需记下前四位即可。然后在Makefile.config文件中找到如下内容:
#……for Linux from 0.0.1 to 3.0.0…# OS ID Linus 0001 3001
将3001改为自己系统版本号的前四位即可。
以上三步都做完后,记得保存,然后关闭即可。
下面开始正式的安装工作。在终端进入到gamit10.40文件夹下,找到安装脚本文件install-software,先要添加可执行属性,在终端输入:chmod+x install-software,然后输入命令:./install-software进行安装。因为之前已经完成了对Makefile.config文件的修改,所以执行安装后一路回复y即可。经过相当长一段时间的编译之后,显示globk installed,最后提示是否建立gg链接,也就是gamit/globk的快捷方式,回复y即可。至此,安装顺利完成了。
3.3配置软件路径
GAMIT/GLOBK安装完成后,还不能正常运行,还需要在主文件夹下的.cshrc文件中加入软件的相关路径。在根目录下的etc文件夹中找到csh.cshrc,将其复制到用户目录下并重命名为.cshrc,在该文件中加入:
set path=(/home/zlq/gamit10.40/com /home/zlq/gamit10.40/gamit/bin/home/zlq/gamit10.40/kf/bin /home/zlq/gamit10.40/help /usr/local/bin /sbin/bin /usr/ccs/bin $path)
setenv HELP-DIR/home/zlq/gamit10.40/help/
保存修改,关闭文件。然后回到终端输入:source.cshrc.这样,路径就生效了。在终端输入gamit的测试命令doy,显示关于day of year(年纪日)的帮助信息,说明软件可以运行了。
整个安装的过程并不简单,笔者在安装的时候也遇到一些问题,好在都一一解决了。在这里将几个比较常见的错误及其解决方法简单介绍一下。
1) ubuntu14.10是一个比较新的版本,其自带的gcc编译器是版本号较高的4.9,如果直接通过sudo apt-get install gfortran来安装gfortran编译器,那么系统默认安装的也是版本号较高的gfortran,这样在编译gamit时就会出一些错误导致安装不能顺利进行。解决这一问题的办法是在系统上安装低版本的gcc和gfortran,具体方法前文已有说明,这里不再赘述。
2) 安装完成后发现sh-get-nav、sh-get-rinex等命令无法使用。解决这一问题的方法是在gg文件夹下的com文件夹里,找到相应的文件,将第一行的tcsh修改为csh.
3) 在编译gamit时报错,错误信息如下:
rnx2crx.c:87:13: warning: built-in function ‘y0’ declared as non-function [enabled by default]
rnx2crx.c:87:34: warning: built-in function ‘y1’ declared as non-function [enabled by default]
rnx2crx.c:108:6: error: conflicting types for ‘getline’
/usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here
rnx2crx.c:559:6: error: conflicting types for ‘getline’
/usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here
rnx2crx.c: In function ‘putdiff’:
rnx2crx.c:671:9: warning: '0' flag ignored with precision and ‘%d’ gnu-printf format [-Wformat]
rnx2crx.c: In function ‘put-clock’:
rnx2crx.c:689:9: warning: '0' flag ignored with precision and ‘%d’ gnu-printf format [-Wformat]
make: *** [rnx2crx] Error 1
Failure in make-gamit-install-software terminated
这一问题的实质其实是getline这个函数发生冲突,解决这一问题的办法是在/home/zlq/gamit10.40/gamit/utils/rnx2crx.c中修改所有的getline为mygetline,使用gedit命令进行编辑修改即可。
在Linux系统上安装gamit/globk是一个比较复杂的过程,在实际的操作过程中总会遇到这样那样的问题,虽然本文结合笔者自身成功安装的经验在很多方面作了详细讲解,但是不可能涵盖所有细节,只能在一定程度上帮助初学者少走一些弯路。只有结合实际,多尝试,多积累,在实践中不断探索,才能在学习Gamit的道路上越走越远。
[1]李征航,张小红.卫星导航定位新技术及高精度数据处理方法[M].武汉:武汉大学出版社,2009.
[2]魏二虎,曹起,李征航. GAMIT软件的教学使用简析[J]. 测绘地理信息,2012(5):23-25.
[3]鄂栋臣,詹必伟,姜卫平,等. 应用GAMIT/GLOBK软件进行高精度GPS数据处理[J]. 极地研究,2005(3):173-182.
[4]维基百科.Ubuntu[OL].(2012-05-16).http://zh.wikipedia.org/org/wiki/Ubuntu.
[5]王国举,尤宝平. GAMIT/GLOBK 10.40在Ubuntu10.10系统下安装详解[J]. 全球定位系统,2012,27(4):67-70,76.
[6]刘志广,占伟,孟宪刚. Ubuntu系统平台的GAMIT/GLOBK 10.35安装详解[J]. 全球定位系统,2009,34(5):52-56.
[7]刘忆智.Linux从入门到精通[M].北京:清华大学出版社,2010.
[8]王志强,李军. GAMIT使用指南[J]. 全球定位系统,2002,27(2):36-39.
[9]GAMIT官网.GAMIT/GLOBK downloads[EB/OL].(2011-11-08) http://www.gpsg.mit.edu/
A Detailed Explanation of GAMIT/GLOBK 10.40 Installation Under Ubuntu 14.10
ZHAO Liqian,PENG Junhuan,LI Shuhui
(SchoolofLandScienceandTechnology,ChinaUniversityofGeosciences(Beijing),Beijing100083,China)
GAMIT/GLOBK is a GPS data processing software with high precision. It is widely used in analysis of crustal deformation, relative position calculation of ground stations and satellite orbit determination and so on. GAMIT can run on all Unix and its derived systems. The installation of GAMIT/GLOBK under Linux is a compilation of source code in fact. The process of installation seems to be very complex because that most researchers know little about Linux. This paper will describe the whole process of the successful installation of this software in detail and the problems encountered and solutions, which is based on ubuntu 14.10 system.It provides reference for the peer.
GAMIT/GLOBK; data processing; Linux; compile
2016-01-11
国家自然科学基金(批准号:41374016;41104025;41330634); 大地测量与地球动力学国家重点实验室基金(编号:SKLGED2013-4-8-E); 中央高校基本科研业务费(编号:35832015084)
P288.4
A
1008-9268(2016)03-0108-05
赵立谦(1991-),男,硕士生,主要研究方向为GNSS数据处理与卫星定轨。
彭军还(1964-),男,博士,中国地质大学(北京)教授,博导,主要研究方向为大地测量数据处理。
李淑慧(1977-),女,博士,中国地质大学(北京)讲师,主要研究方向为GPS电离层电子含量反演。
doi:10.13442/j.gnss.1008-9268.2016.03.023
联系人: 赵立谦 E-mail: 402596199@qq.com