- 论坛徽章:
- 0
|
小弟最近下载了unix下的一个fortran 软件包,其中脚本文件关于solaris中的编译和连结参数为:
'SunOS')
FC='f90'
FL='f90'
COMMON_FLAGS=' -g'
FC_FLAGS=${COMMON_FLAGS}
FL_FLAGS=${COMMON_FLAGS}' -o'
FC90='f90'
FL90='f90'
FC90_FLAGS=${COMMON_FLAGS}
FL90_FLAGS=${COMMON_FLAGS}' -o'
UTIL_TAG='sun'
INC='M'
NCDFINC='/usr/local/include'
NCDFLIB='/usr/local/lib'
cp ../config/makerules.sunos ../config/rules.make;
下面是makerules.sunos中的内容.
.SUFFIXES:
.SUFFIXES: .f .f90 .o
.f.o:
$(FC) $(FC_FLAGS) -c $<
.f90.o:
$(FC90) $(FC90_FLAGS) $(LIBS) $(INCLUDES) -c $<
由于小弟solaris不是很熟,所以将程序挪到linux下运行. 我只会将f90换为pgf90,其他的没有动,编译和连接时没有提示错误,也能生成可执行文件,但一运行就提示segmentation fault.
用strace 追踪可执行文件运行, strace -f -o log ../bin/main.exe,在log文件的最后几行为:
5613 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
5613 fstat64(3, {st_mode=S_IFREG|0644, st_size=1618944, ...}) = 0
5613 _llseek(3, 1617920, [1617920], SEEK_SET) = 0
5613 read(3, "\0\0\0\4\0\0\1g\0\0\26\243\0\0\0d\377\360\275\301\377\360"..., 1024) = 1024
5613 _llseek(3, 0, [0], SEEK_SET) = 0
5613 read(3, "??? \0\0\0 \0\0\0\303\0\0\7\316\0\0\0\372\0\0\0\1\0\0\0"..., 4096) = 4096
5613 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
5613 +++ killed by SIGSEGV +++
我的理解大致是读文件3时出问题了.
这里小弟想请教高手,如何修脚本文件才能解决问题???
或者,那里可以下载到solaris 下的fortran编译器?(刚刚从本论坛上下了solaris10,已经装到机器上了,还不回用,好象也没有fortran编译器)
请高手赐教了,小弟急 |
|