基于Ubuntu 18.04的GAMIT/GLOBK10.71部署与数据解算测试 摘要本文记录了在 Windows WSL2 Ubuntu 18.04 环境下部署 GAMIT/GLOBK 10.71 并进行 GNSS 数据处理测试的完整流程。通过 3 个 IGS 站点BJFS、HKSL、HKWS的单日数据从环境准备、软件安装、表文件配置、数据下载到 GAMIT 日解算和 GLOBK 平差组合逐步演示了 GNSS 数据处理的核心环节。重点总结了 WSL 环境下的路径挂载策略、常见编译问题解决方案、关键表文件作用以及从单日测试到多日时间序列处理的进阶路线为 GNSS 数据处理初学者提供了一套可复现的实践参考。最近在 Windows WSL2 的 Ubuntu 18.04 环境中完成了 GAMIT/GLOBK 10.71 的部署并基于 3 个 IGS 站点数据进行了单日测试。之前参考过一些 GAMIT 安装博客发现很多教程主要集中在软件安装本身但实际操作中还会涉及路径挂载、表文件配置、轨道文件准备、数据下载、GAMIT 日解算以及 GLOBK 平差组合等环节。因此这里整理一份相对完整的实践记录供刚接触 GAMIT/GLOBK、GNSS 数据处理或测绘地球物理方向的同学参考。一、运行环境本次使用的环境为Windows WSL2 Ubuntu 18.04 GAMIT/GLOBK 10.71GAMIT/GLOBK 安装在 Ubuntu 18.04 中示例安装目录为/home/user/gamit10.71并建立软链接~/gg -/home/user/gamit10.71这样后续可以通过~/gg或$GG调用 GAMIT/GLOBK 的相关目录和程序。本次配置的基本思路是Windows 负责文件管理 Ubuntu/WSL 负责专业计算 F 盘负责存放工程数据和结果也就是说软件主体安装在 Ubuntu 中但测试工程目录挂载到 Windows 的 F 盘中。Windows 示例路径为F:\gamit_project\cn3_test_2026121在 WSL Ubuntu 中对应为/mnt/f/gamit_project/cn3_test_2026121这种方式的好处是一方面GAMIT/GLOBK 仍然在 Linux 环境中运行兼容性较好另一方面输入数据、日志文件、q-file、h-file 和结果文档都保存在 Windows 磁盘中后期查看、复制、压缩、备份都比较方便。可以简单理解为Windows 大硬盘负责数据管理 Ubuntu 18.04 负责专业计算不过需要注意如果是大规模连续解算尤其涉及大量小文件读写直接在/mnt/f这类 Windows 挂载目录下运行可能会比 Linux 原生目录慢。因此建议小规模测试、教学演示、结果整理可以放在 F 盘挂载目录 长期批量计算、大规模 GNSS 网建议放在 /home/user/... 中运行完成后再复制回 Windows 磁盘二、安装前准备GAMIT/GLOBK 是比较传统的 Linux/Unix 科研软件不建议直接在 Windows 原生环境中安装。比较稳妥的路线包括1. Linux 实体机 2. Linux 虚拟机 3. WSL2 Ubuntu本次采用WSL2 Ubuntu 18.04安装前需要准备基础依赖sudoaptupdatesudoaptinstallcsh tcsh gcc gfortranmakelibx11-dev libxt-dev其中csh和tcsh很关键因为 GAMIT/GLOBK 中大量脚本采用 csh 风格。如果缺少这些依赖install_software、sh_setup、sh_gamit等脚本可能无法正常运行。三、安装 GAMIT/GLOBK示例安装包路径为/home/user/gamit10.71.zip解压后通常包括install_software gamit/globk 源码包 tables incremental_updates 测试数据示例安装目标目录为/home/user/gamit10.71安装过程中可能遇到几个典型问题。第一个问题是 WSL2 内核版本较新GAMIT 10.71 的老脚本可能无法正确识别 Linux 版本。这时需要检查Makefile.config适当放宽 Linux 版本识别范围使其复用已有的 Linux 编译配置。第二个问题是老 Fortran 程序在较高优化级别下可能触发gfortran编译错误。如果在编译类似dlinpk.f这类文件时出现异常可以尝试将优化级别从-O3或-O1降为-O0这类问题不一定是源码本身有语法错误而可能是老 Fortran 代码与编译器优化选项之间的兼容性问题。安装完成后可检查核心命令whichsh_gamitwhichglobkwhichglorgwhichmakexp正常情况下会返回类似路径sh_gamit - /home/user/gamit10.71/com/sh_gamit globk - /home/user/gamit10.71/kf/bin/globk glorg - /home/user/gamit10.71/kf/bin/glorg makexp - /home/user/gamit10.71/gamit/bin/makexp能找到这些程序说明 GAMIT/GLOBK 主体基本安装成功。四、环境变量配置安装完成后需要配置环境变量。可以在~/.bashrc中加入exportGG/home/user/gamit10.71exportHELP_DIR$GG/helpexportPATH$GG/com:$GG/gamit/bin:$GG/kf/bin:$PATHexportINSTITUTEABC其中GG GAMIT/GLOBK 主目录 HELP_DIR 帮助文件目录 PATH 将 GAMIT/GLOBK 命令目录加入系统搜索路径 INSTITUTE 机构或项目代号可先使用三位占位符配置后执行source~/.bashrc然后测试whichsh_gamitwhichglobkwhichglorgwhichmakexp若能返回对应路径说明环境变量已经生效。五、工程目录准备GAMIT/GLOBK 通常按项目和年份组织数据。例如处理 2026 年数据可建立如下工程目录mkdir-p/mnt/f/gamit_project/cn3_test_2026121/2026cd/mnt/f/gamit_project/cn3_test_2026121/2026 sh_setup-yr2026这里工程目录位于/mnt/f/gamit_project/cn3_test_2026121对应 Windows 路径为F:\gamit_project\cn3_test_2026121运行sh_setup -yr 2026后会生成或链接一些关键目录rinex/ RINEX 观测文件 brdc/ 广播星历 igs/ 精密轨道、钟差、ERP 等 gfiles/ GAMIT 轨道积分相关文件 tables/ GAMIT 核心控制表文件 gsoln/ GLOBK 结果目录 glbf/ GLOBK binary h-file figs/ 图件输出其中最关键的是tables/GAMIT 的很多问题不是程序本身的问题而是tables中的控制文件没有配置正确。六、核心表文件GAMIT/GLOBK 的学习难点之一是表文件较多。初学阶段建议重点理解以下文件sites.defaults控制哪些测站参与处理哪些测站下载哪些测站排除。process.defaults控制处理路径、采样率、数据源、轨道源、压缩删除等。station.info测站仪器信息表包括接收机、天线、天线高、起止时间等。该文件非常关键天线高或天线型号错误会直接影响解算结果。sestbl.GAMIT 日解算策略表控制观测组合、对流层、电离层、潮汐、天线模型、轨道模型等。sittbl.测站约束表用于控制测站坐标约束强弱。lfile.测站先验坐标文件。如果新站坐标误差过大可能导致预处理或解算失败。autcln.cmd自动清理观测数据的控制文件涉及周跳探测、粗差剔除、高度角、残差阈值等。初学阶段建议优先掌握sites.defaults station.info sestbl. sittbl. process.defaults七、测试数据准备本次测试采用 3 个 IGS 站点的单日数据测试日期为2026-05-01 DOY 121测试站点为BJFS HKSL HKWS数据源主要来自武汉大学 IGS 数据中心。需要准备三类主要文件第一类是 RINEX 观测文件放入rinex/例如bjfs1210.26o hksl1210.26o hkws1210.26o第二类是广播星历放入brdc/例如brdc1210.26n第三类是精密轨道 SP3放入igs/例如wum24165.sp3本次测试最终采用 WHU 精密轨道并在 GAMIT 中使用-orbitwuhm八、文件下载与命名武汉大学 IGS 数据中心可以下载 GNSS 观测文件、广播星历和精密轨道文件。为了便于控制流程测试时可以先手动下载并放入相应目录再使用-noftp参数避免 GAMIT 自动联网下载。RINEX 文件放入/mnt/f/gamit_project/cn3_test_2026121/2026/rinex广播星历放入/mnt/f/gamit_project/cn3_test_2026121/2026/brdc精密轨道放入/mnt/f/gamit_project/cn3_test_2026121/2026/igs需要注意不同数据中心的目录结构和命名规则并不完全相同。有些精密轨道产品下载后是长文件名为了让 GAMIT 更容易识别可以根据 GPS week 和 day of week 改成短文件名例如wum24165.sp3其中2416表示 GPS week5表示 day of week。九、运行 GAMIT 日解算准备好数据和表文件后进入工程年份目录cd/mnt/f/gamit_project/cn3_test_2026121/2026目录结构大致为2026/ rinex/ bjfs1210.26o hksl1210.26o hkws1210.26o brdc/ brdc1210.26n igs/ wum24165.sp3 tables/ sites.defaults station.info sestbl. sittbl. process.defaults测试阶段需要检查tables/sites.defaults确保本次只处理目标站点。如果sestbl.中开启了本地缺失的模型例如Ion model GMAP Use otl.grid Y但本地没有对应的 ionex 文件或海潮负荷格网可能会导致报错。测试阶段可暂时改为Ion model NONE Use otl.grid N需要说明的是正式高精度处理时不能随意省略这些改正。测试阶段这样做只是为了先跑通基本流程。主解算命令示例sh_gamit-exptcn3w-s2026121121-orbitwuhm-noftp-presELEV-coptx k p-doptsc ao-nopngssh_gamit_2026121.log参数含义如下-expt cn3w 实验名后续输出文件会带该名称。 -s 2026 121 121 处理 2026 年第 121 天即 2026 年 5 月 1 日。 -orbit wuhm 使用 WHU 精密轨道。 -noftp 不让 GAMIT 自动下载使用本地已准备好的文件。 -pres ELEV 按高度角加权低高度角观测权重较低。 -copt x k p 处理后压缩部分中间文件。 -dopts c ao 处理后删除部分中间文件。 -nopngs 不生成 PNG 图减少测试阶段额外输出。十、计算完成后检查结果GAMIT 跑完后不应只看最后有没有报错还要检查几个关键文件。GAMIT.status用于快速判断当天处理是否完成。q-fileGAMIT 的最小二乘解算结果文件。重点关注postfit nrms 坐标改正 模糊度固定情况 站点残差autcln.prefit.sum和autcln.post.sum用于查看数据清理情况例如周跳 粗差 删除率 残差统计h-fileGAMIT 输出的日解结果后续 GLOBK 平差/组合需要使用。如果只是流程测试能够生成 q-file 和 h-file通常说明 GAMIT 主流程已经跑通。十一、GLOBK 平差与组合GAMIT 可以理解为单日或单批数据解算GLOBK 则用于后续多日、多网、多解的组合和平差。首先可执行sh_glred-cmd该命令会准备标准的globk.cmd glorg.cmd然后执行sh_glred-s20261212026121-exptcn3w-optH G Tsh_glred.log其中-opt H 将 GAMIT h-file 转换为 GLOBK binary h-file。 -opt G 运行 globk/glorg进行组合和平差。 -opt T 生成时间序列相关结果。GLOBK 常见输出包括*.org *.prt *.pos *.vel *.glx如果后续处理连续多日数据就可以进一步分析站点重复性、时间序列和速度场。十二、文件下载、GAMIT 计算与 GLOBK 平差的关系可以简单理解为文件下载 准备 RINEX、广播星历、精密轨道、ERP、表文件等 GAMIT 计算 利用每日观测数据进行基线/网解生成 q-file、h-file 等结果 GLOBK 平差 将一天或多天的 h-file 进行组合得到更稳定的坐标、速度场或时间序列也就是说文件下载是准备原材料GAMIT 是日解算GLOBK 是组合和平差。如果科研目标是获取站点时间序列或速度场通常不能只停留在sh_gamit还需要进一步进行sh_glred/globk/glorg处理。十三、踩坑总结本次配置和测试中比较重要的经验包括GAMIT 老版本对新 WSL/Linux 内核识别不友好必要时需要修改Makefile.config。gfortran高优化可能导致老 Fortran 文件编译失败可尝试降低优化级别。csh/tcsh必须安装否则很多 GAMIT 脚本无法运行。tables文件非常关键尤其是station.info、sestbl.和sites.defaults。初学建议先跑 3 个站、1 天数据不要一开始就处理几十个站或多年数据。F 盘挂载目录适合测试和结果管理但大规模批量计算建议使用 Linux 原生目录。WHU、IGS、CODE 等数据中心的文件命名和目录结构要提前了解。报错时不要只看屏幕最后几行要检查 log、GAMIT.status 和 q-file。Ion model、otl.grid、精密轨道、广播星历等文件和参数需要匹配。GLOBK 是后续时间序列、速度场和参考框架处理的重要环节。十四、个人理解GAMIT/GLOBK 的难点不只是安装而是一整套处理逻辑安装软件 配置环境变量 准备 tables 下载 RINEX、轨道和星历 运行 GAMIT 日解算 检查 q-file 和 h-file 运行 GLOBK 组合和平差 输出时间序列或速度场本次测试的意义在于跑通了一个最小闭环3 个 IGS 站 1 天数据 WHU 数据源 F 盘挂载工程目录 Ubuntu 18.04 中运行 GAMIT/GLOBK 完成 GAMIT 日解算 理解 GLOBK 平差流程对初学者建议学习路线为第一步装通 GAMIT/GLOBK 第二步跑通 3 个站 1 天 第三步跑 3 个