如何更正“体系结构x86_64的未定义符号”?

时间:2019-08-17 07:59:05

标签: linker fortran gfortran macos-mojave

我目前正在从事一个涉及Fortran和R的项目,但是重点在于后者,并且Fortran方面不需要太多编码。目的是创建一个包含Fortran子例程的动态库/共享对象,该例程要加载到R中,并可以在其中调用。

一些背景:

我得到一个包含一个名为FitterModule.f95的模块的Fortran文件,并在另一个名为zyzzyva.f95的Fortran文件中设置了我的Fortran子例程。该子例程将利用模块本身内的函数(al00),其代码如下所示:

subroutine al00wrapper(ca, d, answer)
    use FitterModule
    real :: ca, d, answer
    answer = al00(ca, d)
    return
end subroutine

此后,我进入Macbook终端,使用以下命令创建共享库:

gfortran -c zyzzyva.f95
gfortran -shared -o zyzzyva.so zyzzyva.o
gfortran -shared -o zyzzyva.so zyzzyva.o FitterModule.o 
gfortran -shared -o zyzzyva.so FitterModule.o zyzzyva.o

但是,每次给我以下结果:

Undefined symbols for architecture x86_64:
  "_al00_", referenced from:
      _al00wrapper_ in zyzzyva.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

我浏览了可能与我的帖子类似的帖子,但是我仍然无法弄清楚哪里出了问题。

我对此绝对是新手,如果能得到一些解决此问题的建议,我表示感谢,谢谢!

0 个答案:

没有答案