・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