我在Ubuntu 12.04和Linux Mint 17.3上使用FFTW3和gfortran。 虽然我为两个操作系统编写了相同的代码,但它不仅适用于Ubuntu。 对于两者,我安装如下:
$ sudo apt-get install gfortran libfftw3-dev
然后,我可以找到
/usr/include/fftw3.f03
同时。
此外,我可以在Ubuntu中找到/usr/lib/libfftw3.a
(和*.so
),在Linux Mint中找到/usr/lib/x86_64-linux-gnu/libfftw3.a
(和*.so
)。
接下来,我写了以下fortran代码:
program test
use,intrinsic :: iso_c_binding
implicit none
(statements)
include 'fftw3.f03"
...
plan = fftw_plan_dft_1d(N, signal, spectrum, -1, fftw_estimate)
call fftw_execute_dft(plan, signal, spectrum)
...
通过
编译 $ gfortran test.f03 -I/usr/include -L/usr/lib -lfftw3 -lm
我在Linux Mint中获取了一个可执行文件。 但是,Ubuntu说
/tmp/(random charcters).o: In function `Main__':
test.f03:(.text+0x9ce): undefined reference to `fftw_plan_dft_1d'
test.f03:(.text+0x9ef): undefined reference to `fftw_execute_dft'
collect2: ld returned 1 exit status
gfortran和FFTW3的版本: 对于Ubuntu 12.04,
对于Linux Mint 17.3,
我应该在Ubuntu中使用不同的编译选项吗? 或者我错误地指定了库直接? 请让我知道相关的事情。 感谢。