我目前正在从事一个涉及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
我浏览了可能与我的帖子类似的帖子,但是我仍然无法弄清楚哪里出了问题。
我对此绝对是新手,如果能得到一些解决此问题的建议,我表示感谢,谢谢!