GAMIT/GLOBK
果然是相当的不好装,不过今天貌似搞定了。网上的资料不多,谈及奇怪
问题的情况的文章更少,因此想起写这篇文章。
1.
操作系统
其实我一直就不明白,
一个科学计算的程序干嘛用那么多平台相关的代码
(
Doris
也是这副
德行,很让人不爽)。本来就捉襟见肘的硬盘空间还要分杯羹给
*nix
系统,真的很麻烦(别
看我网名
linuxmao
,这个是有历史因素的)。我先用的是
Slackware
,一个以开发著称的
Linux
发行版(当然还用过
FreeBSD
和
Ubuntu
,很可惜,这二者装
g77
不方便)。在
Cygwin
的情况下务必请大家断网,关
Kaspersky
,关
360
安全卫士,关
360
保险箱,否
则
Cygwin
的
dlls
会中途出错,无法继续。
2. X11
Slackware
在默认的情况下,貌似
X11LIBPATH
和
X11INCPATH
是空的。这个问题开
始你不会发现,
只有在
make_gamit
这步中才会出问题。
因为
make_gamit
会检查这两个
变量对应的路径,
如果为空,
会失败
(我把安装脚本给改了,
让
make_gamit
不去检查
X11
是否存在。
这么做会不会有后遗症我不知道,
因为在那之前就失败了)
。
在
Cygwin
下面,
你如果在安装时选择了
X11
的相关头文件和库文件,
X11INCPATH
会被自动找到
(
/usr/X11R6/include
),但是
X11LIBPATH
不会被找到。为什么呢?这个查找过程实际
上是自动搜索
Xlib.h
和
libX11.a
两个文件的路径。但是
Cygwin
下没有
libX11.a
,相应
的是一个叫做
libX11.dll.a
的文件。
用
ln -s libX11.dll.a libX11.a
命令做一符号链接就好了。
3. g77
Slackware
的
g77
是有瑕疵
——
没有
idate()
函数(反正我没找到,网上也语焉不详)。
国外的新闻组上有篇文章给了一个方案,将
date_and_time()
函数转化为
idate()
。由于对
Fortran
不熟,
所以只得作罢。
我推测是
Slackware
的
g77
是
4.x
版的,
Cygwin
是
3.4.4
,
反正
GCC
每次大升级都不怎么保证向下兼容。
另外,
不知道为什么,
Cygwin
下运行
install_soft
没有传递编译器类型,
这点真的很无语,
只得再次改了安装脚本。
4. uname -a
这个大家应该知道是什么,就是看系统的版本了。
Cygwin
得出来的是
“CYGWIN_NT
-5.1
1.5.18(0.132/4/2) i686 unknown unknown Cygwin”
。
unimake
会
name mangle
一下,把它变成
OS_ID
的形式,比如
SunOS