编译 Fortran 示例时找不到 -lfftw

Can't find -lfftw when compiling a Fortran example

我的目的只是在一维示例上测试 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

您通常也必须设置路径,但我看到您使用的是 -L/usr/local/lib。这应该足以 linking(不一定 运行)。

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