编译Fortran示例时找不到-lfftw

时间:2017-11-22 14:30:22

标签: linux fortran fft gfortran fftw

我的目标是在一维示例上测试FFTW。我按照说明安装了所有东西。当我尝试编译时:

gfortran fftg.f90 -L/usr/local/lib -lfftw3

终端发出错误:

/usr/bin/ld : can't find -lfftw3

我不明白为什么因为它安装在我的计算机上,当我在搜索它时,FFTW库就在这里

 /usr/local/lib$ ls
cmake  libfftw3.a  libfftw3.la  pkgconfig  python2.7  python3.4  R  site_ruby

我没有找到任何答案。错误来自哪里?有关详细信息,这是我的代码(取自http://homepage.ntu.edu.tw/~wttsai/fortran

program example

implicit none
include 'fftw3.f90'
integer, parameter :: N=16
integer*8 :: PLAN_FOR,PLAN_BAC
real*8,dimension(N) :: IN,OUT,IN2
real*8 :: xj
integer :: j,k,mode
real*8, parameter ::twopi=2.*acos(-1.)
!Discrete data of function f(x)=cos(x)+0.2*sin(2x)
do j=0,N-1
    xj=twopi*real(j)/real(N)
    IN(j)=cos(xj) +0.2*sin(2.*xj)
end do

write(*,*) "Original data"
do j=1,N
   write(*,100) j,IN(j)
end do
100 format(i4,f12.5)

! Forward transform

call dfftw_plan_r2r_1d(PLAN_FOR,N,IN,OUT,FFTW_R2HC,FFTW_ESTIMATE)
call dfftw_execute_r2r(PLAN_FOR,IN,OUT)
OUT=OUT/real(N,KIND=8)         

! Normalize
write(*,*) "Fourier coefficient after forward FFT"

do k=1,N
   mode=k-1
   if(k > N/2+1) mode=N-k+1
   write(*,100) mode,OUT(k)
end do

call dfftw_destroy_plan(PLAN_FOR)
end program example

1 个答案:

答案 0 :(得分:0)

您通常也必须设置路径,但我发现您使用的是-L/usr/local/lib。这应该足以进行链接(不一定是为了运行)。

但是您编译的FFTW是静态的(.a)并且您正在动态编译。您可以尝试使用-static进行编译。如果您需要动态链接,则还需要安装库的动态版本(.so)(即,不要在-enable-static中使用configure)。