我尝试在Fortran中使用fftw3库。调用计划程序子例程时收到未定义的引用错误。
由于我既不精通Fortran,也不精通C语言,所以到目前为止,我所要做的就是重新阅读文档,并希望能找到解决方案。到目前为止,阅读和绊脚都没有成功。
我在ubuntu上工作,并使用gfortran。
gfortran dft.f90 fftw3.f90 dft_variable.f90 -L/usr/lib/x86_64-linux-gnu -libfftw3
dft.f90是主程序。
fftw3.f90包含fftw3常量。它们在这里找到:https://people.sc.fsu.edu/~jburkardt/f_src/fftw3/fftw3.f90
dft_variables.f90包含一些dft代码所需的变量和参数。
Program simple_dft
use fftw3
use dft_variable
Implicit none
real, dimension(:),allocatable :: fft_in, fft_out, rho
integer*8 :: plan,
integer :: num_points
{...} ! Here happens the calculation of the initial density rho
allocate(fft_in(num_pts),fft_out(num_pts),rho(num_pts))
fft_in = rho
call dfftw_plan_dft_r2c_1d(plan,num_pts,fft_in,fft_out,FFTW_ESTIMATE)
call dfftw_execute_dft(plan, fft_in,fft_out)
End Program simple_dft
我希望计划者创建计算rho FFT所必需的计划。
_variable.f90 -L/usr/lib/x86_64-linux-gnu-libfftw3
/tmp/cc8nDlG7.o: In function `MAIN__':
dft.f90:(.text+0x3aeb): undefined reference to `dfftw_plan_dft_r2c_1d_'
dft.f90:(.text+0x3b0d): undefined reference to `dfftw_execute_dft_'
collect2: error: ld returned 1 exit status