我有一个Fortran 90程序,它使用lapack子程序,并且在我的Ubuntu系统上成功运行。现在我想在Mac上运行它(OS X版本10.11.4)。我正在使用gfortran编译器作为gcc的一部分,从homebrew存储库安装,以及安装在/ usr / local / lib /中的lapack库。 当我尝试编译代码时,出现以下错误:
gfortran my_prog.f90 -L/usr/local/lib/ -llapack
Undefined symbols for architecture x86_64:
"_daxpy_", referenced from:
_zggbal_ in liblapack.a(zggbal.o)
...
"_ztrmv_", referenced from:
_zlarft_ in liblapack.a(zlarft.o)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
经过一些谷歌搜索我明白问题是因为链接。当我像这样编译它时,一切运行良好:
gfortran my_prog.f90 -llapack
当使用框架加速的llapack时,编译器也不会抱怨。
gfortran my_prog.f90 -framework accelerate
库是x86-64架构:
lipo -info *.a
input file libfftw3.a is not a fat file
input file liblapack.a is not a fat file
Non-fat file: libfftw3.a is architecture: x86_64
Non-fat file: liblapack.a is architecture: x86_64
LAPACK不是唯一一个给我一个错误的,后来FFTW3出现同样的问题。你能否给我一个提示解决这个问题的方法?
答案 0 :(得分:0)
FFTW不属于accelerate framework。如果要使用它,还需要将-lfftw3
添加到编译选项中。
如果库不在默认的LIBRARY_PATH中,您可能还需要指定-L/path/to/fftw/libs
。如果您使用其模块-I/path/to/fftw/includes
,则包含路径也是如此。
请注意,该库的vDSP
部分还提供了FFT implementations。您可能根本不需要FFTW。