F2PY和Gfortran的编译错误:未定义对`main'的引用

2024-05-14 06:01:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用f2py和python2.7编写一些与Fortran中的海洋模型(ROMS)相关的代码。我的工作站是Ubuntu16.04和python2.7、anaconda2和gfortran。我也安装了netcdf和hdf5库。在

makefile中的指令如下(在一行中):

$(F2PY) --fcompiler=gfortran --f90flags=$(F2PY_F90_FLAG) $(F2PY_LIB) $(F2PY_INCLUDE) $(OBJF2PY) -m -c scrip pyscrip.f90

其中:

  • F2PY链接到/bin目录中的F2PY编译器。在
  • OBJF2PY是要使用f2py编译的对象文件集(所有相关的源文件都在目录中)。在
  • F2PY_INCLUDE是包含路径(包含netcdf.inc.公司以及netcdf.mod)在
  • -L${LIBDIR}-lnetcdf-lnetcdff-lhdf5-lhdf5_hl是库路径,链接到netcdf和hdf5库文件。在
  • F2PY_F90_FLAG='-g-fdefault-real-8-ffixed form-O2-fPIC-m64-shared'-链接到F2PY的编译器标志。在

在编译过程中,我得到一个给定的错误:

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function _start: (.text+0x20): undefined reference to 'main' collect2: error: ld returned 1 exit status

我不明白为什么会出现这个错误。说明书的顺序正确吗?它和编译器标志有关吗?代码是否需要其他include文件(除了netcdf.inc.公司),或任何其他库(netcdf和hdf5库除外)?在


Tags: 文件代码路径目录编译器include链接netcdf