gcc - 使用gfortran编译: undefined reference to iargc_

标签 gcc fortran gfortran fortran77

我正在 Fedora 20 x86_64 上使用 gfortran [GNU Fortran (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)] 编译一堆 Fortran 77 代码,这些代码引用了以下方式:

bin2D2nc.f:31: integer iargc,strlen1

bin2D2nc.f:32: external iargc,strlen1

bin2D2nc.f:44: i=iargc()

当 make 脚本到达下面的编译命令时,

gfortran -O3 -ffixed-line-length-132 -fall-intrinsics -I/home/santiago/Install/netcdf_sam/include   -o bin2D2nc -I./SRC ./SRC/bin2D2nc.f ./SRC/hbuf_lib.f ./SRC/cape.f ./SRC/cin.f -L/home/santiago/Install/netcdf_sam/lib  -lnetcdf -L/usr/lib64 -lpthread

我收到这些消息:

bin2D2nc.f:(.text+0x14): undefined reference to `iargc_'

collect2: error: ld returned 1 exit status

make: ** [bin2D2nc] Erro 1

我不是这段代码的作者。据我所知,我在 makefile 中正确设置了库路径.

我发现“iargc”是一个与 GNU Fotran 77 向后兼容的例程,但我对它的理解并不深入。

有人可以提供一些建议来解决这个问题吗?

最佳答案

该问题与 Fixing FORTRAN IV warning: "The number of arguments is incompatible with intrinsinc procedure, assume 'external' " 非常相似但不同之处在于,在另一个问题中存在一个外部函数,并且与内在函数的相似性是无意的,但您是故意调用内在函数的。

声明

EXTERNAL IARGC

表示 IARGC 在 FORTRAN 66 中是外部或内部函数,但在“现代 Fortran”77 及更高版本中表示它只是一个外部函数。

但是你需要调用内部函数https://gcc.gnu.org/onlinedocs/gfortran/IARGC.html .

你应该使用

 INTRINSIC IARGC

或者甚至只是从 EXTERNAL 语句中删除 IARGC,而不添加任何其他内容。然后编译器将停止搜索不存在的外部函数并使用内部函数。

最后一点,IARGC 本身不是标准的 Fortran,但这在这里并不重要。

关于gcc - 使用gfortran编译: undefined reference to iargc_,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35003926/

相关文章:

c - Gentoo GCC 出现失败

compiler-errors - 为什么我的代码无法在fortran中编译?

emacs - 我可以使用固定格式的 emacs f90-mode 吗?

compiler-errors - 如何编译此较早的Fortran代码?

c - 链接错误 - 使用 nm 修复

c - 我正在使用 RSA 算法的源代码。它编译正确,没有错误,但输出不正确

fortran - 随机数生成器(RNG/PRNG)返回种子的更新值

gcc - 对 `omp_get_max_threads_' 的 undefined reference

c - 如何在带有 GCC 的 C 程序中的函数之间暂停?

Fortran:使用两种不同编译器编译的生成代码之间的差异