gfortranでのコンパイル: インクルードファイルとライブラリファイルの指定、 共有ライブラリ化 fftw3を例に

・fftw3ライブラリを用いた共有ライブラリの作成例

gfortran -shared -fPIC -o ssvkernel.so ssvkernel.f90 -I/usr/local/fftw.3.3.10/include -L/usr/local/fftw.3.3.10/lib/ -lfftw3

 

-shared -fPIC で共有ライブラリ作成

-o はコンパイルされたファイルの名前を指定

-I/外部includeファイルへのパス

-L/外部ライブラリへのパス

-l/外部ライブラリの指定(lib, .aは省いて書く)

 

ソースコンパイルとリンクを1行で行い、共有ライブラリを作成している。

 

・fftw3ライブラリを用いた実行ファイルの作成例

gfortran -c ssvkernel.f90 -I/usr/local/fftw.3.3.10/include 

gfortran ssvkernel.o -L/usr/local/fftw.3.3.10/lib/ -lfftw3

 

ソースコンパイルと、リンクを各行で行っている。生成される実行ファイルはa.out

(下記のssvkernel.f90ではなくプログラム部分を作る必要がある)

 

 

ssvkernel.f90:

module ssvkernel
  use ISO_C_BINDING
  implicit none
  include 'fftw3.f'
  integer :: xsize
  integer :: tinsize
  double precision, parameter :: pi  = 4 * atan (1.0_8)
contains

  subroutine ssvk(optw, M, winparam, xsize0, tinsize0, xdat, yh) bind(C, name="ssk"

   ・

   ・

  end subroutine ssvk

 

  subroutine fft(N, input, output, xinput, Xoutput)

   ・   

    call dfftw_plan_dft_1d(plan, N, input, output, FFTW_FORWARD, FFTW_ESTIMATE)
    call dfftw_execute_dft(plan, xinput, Xoutput)

   ・

   end subroutine fft

 

end module ssvkernel