fortranにおけるライブラリ指定の仕方

自作ライブラリの作成

まずは普通にプログラムを作成する.それをコンパイル.

gfortran -c test_source.f90

ar(archive)コマンドを使ってライブラリ化する.

ar cr testlib.a *.o

ちなみにcは作成(create)で,rは置換(Replacement)で古いファイルを置換する. ライブラリ使用時は直接指定

gfortran -o trylib.f90  ./testlib/testlib.a

もしくは-l及び-Lオプションを使う.-lオプションを使うにはlib~~~.aという名前でなければならないから,

mv testlib.a libtest.a

を行ってから,

gfortran -o trylib.f90 -Ltestlib -ltest

とすれば良い.

Links : https://docs.oracle.com/cd/E19205-01/820-1203/aeudl/index.html

python ライブラリでの blas 、他ライブラリの 使用

  • python ライブラリで blasをリンクしておかないと、blasが使えない.

  • gfortran などで、blasを陽に指定する際は、以下のような makefile を書くと良い.

python-fortran library example of makefile
 1target = ../pylib.so
 2object = \
 3  linearInterp.f90 \
 4  barycentric__interpolator.f90 \
 5  interpolate__fromTriMesh.f90 \
 6  cubicinterpolation_3d.f90 \
 7  interpolate__trilinear.f90
 8
 9FC = gfortran
10FFLAGS  = -O3 -llapack -lblas
11LDFLAGS =
12ARCHIVE = /usr/local/lib/libopenblas.a
13
14# FC = ifort
15# FFLAGS  = -O3 -mkl
16# LDFLAGS =
17# ARCHIVE = 
18
19PYFLAGS = -fPIC -shared 
20
21.SUFFIXES: .so .f90
22$(target): $(object)
23	$(FC) -o $(target) $(LDFLAGS) $(PYFLAGS) $(FFLAGS) $(object) $(ARCHIVE)
24
25.PHONY:all clean
26clean:
27	$(RM) $(target) 
28all: clean $(target)
  • 基本的には、 libopenblas.a etc. をフルパスで与えれば良い.