Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
架构x86_64:gfortran的未定义符号_Fortran_Gfortran - Fatal编程技术网

架构x86_64:gfortran的未定义符号

架构x86_64:gfortran的未定义符号,fortran,gfortran,Fortran,Gfortran,大家好,我正在尝试编译一个由别人编写的Fortran代码,我相信是F77(.for extension)。我得到的错误是: Undefined symbols for architecture x86_64: "_random_", referenced from: _pms_ in ccx1qzWD.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit stat

大家好,我正在尝试编译一个由别人编写的Fortran代码,我相信是F77(.for extension)。我得到的错误是:

Undefined symbols for architecture x86_64:
  "_random_", referenced from:
      _pms_ in ccx1qzWD.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
我现在不发布代码,但我一直在网上搜索这个错误的含义,这样我就可以开始搜索解决方案,但找不到任何有用的信息。我以前没有Fortran的经验!非常感谢您对此错误含义的任何帮助。我使用的是mac,唯一包含“随机”的部分是子程序的一部分:

DOUBLE PRECISION RANDOM

DO 1 J=1,M
      w(J)=dw+REAL(J*2-1)*dw/2.0
      W1=w(J)*w(J)*w(J)*w(J)*w(J)
      Vel1=Vel*Vel*Vel*Vel*W1/w(J)
      Vel1=-6844.0697/Vel1
      Gw(J)=0.77898/W1*EXP(Vel1)
      Phi(J)=RANDOM()*8.0*ATAN(1.0)
1     CONTINUE
我正在使用:gfortran seisam.FOR进行编译


提前感谢您的建议

好的,看起来您肯定没有向链接器提供包含
random
实现的库。你可以四处挖掘,找到这样一个库,修改你的链接,看看结果如何。但是,将对
random
的调用替换为对
gfortran
内在
rand
的调用会更容易,它将从
0
1
之间的均匀分布返回一个数字。这就是我建议你做的。有关更多详细信息,请参阅文档

更好的方法是使用现在标准的
随机数
,但这是一个子程序,需要对程序进行更多修改

我一直怀疑,如果您构建程序的唯一步骤是在命令行上执行
gfortran seisam.FOR
,那么您可能缺少到其他必要库的链接,因此如果您报告失败,我不会感到惊讶

这条线

DOUBLE PRECISION RANDOM

声明
RANDOM
是一种
双精度的东西。稍后使用
RANDOM()
可以清楚地看出,它是一个返回值的函数,而不是一个保存值的变量。编译器对实现例程的代码的位置漠不关心,但链接器却不关心。

好的,我添加了源代码中一定是导致错误的部分(random不在其他任何地方)。我对一行有点困惑,它说:双精度随机这行是不是试图调用一个名为random的旧库?我不明白这句话的语法,也不明白它到底是什么意思(我疯狂地在谷歌上搜索,但找不到任何有用的东西)