我在用gcc编译库hypoct时遇到了一些问题。
库是用Fortran编写的,因为我对Fortran一无所知,所以我想使用与Fortran代码捆绑在一起的C包装器。 库结构如下:
src/hypoct.f90 --------------> Main code
src/hypoct_c.f90 ------------> Fortran part of the C wrapper
c/hypoct.c ------------------> C Part of the C wrapper
examples/hypoct_driver.c ----> Example that I want to compile
现在,在Fortran代码编译期间没有问题,我启动以下命令没有错误或警告:
gfortran -fPIC -Wall -O3 -Jbin -c src/hypoct.f90 -o bin/hypoct.o
gfortran -fPIC -Wall -O3 -Jbin -c src/hypoct_c.f90 -o bin/hypoct_c.o
但是当最后一个命令启动时:
gcc -o examples/hypoct_driver -fPIC -Wall -O3 -Ibin -Ic -lgfortran -lm examples/hypoct_driver.c bin/hypoct.o bin/hypoct_c.o
出现了很长的错误列表:
bin/hypoct.o: In function `__hypoct_MOD_hypoct_malloc2i':
hypoct.f90:(.text+0xa61): undefined reference to `_gfortran_runtime_error_at'
hypoct.f90:(.text+0xa6f): undefined reference to `_gfortran_runtime_error'
hypoct.f90:(.text+0xa7b): undefined reference to `_gfortran_os_error'
hypoct.f90:(.text+0xa97): undefined reference to `_gfortran_runtime_error_at'
但是,如果我在最后一个命令中将gcc
更改为gfortran
,一切正常,没有错误(但我真的想在最后一个命令中使用gcc
)。
我在这几天都在努力,任何帮助都非常感激。