[FORTRAN] Shared Library 생성하기

자주 쓰는 함수나 루틴들은 공유라이브러리로 만들어 놓은 다음 사용하면 여러가지로 편의성을 제공합니다. 공유라이브러리는 Mac OS : *.dylib, Windows : *.dll, Linux : *.so 의 확장자를 갖습니다. 다음 예제를 통하여 공유라이브러리 코드작성법과 컴파일 방법을 알아봅시다.

1. Main : test.f90
PROGRAM MAIN
!DEC$ ATTRIBUTES DLLIMPORT::HELLODLLRUTINE1
!DEC$ ATTRIBUTES DLLIMPORT::HELLODLLRUTINE2
CALL HELLODLLRUTINE1()
CALL HELLODLLRUTINE2()

END PROGRAM

2. Shared Library 1 : testdll1.f90
SUBROUTINE HELLODLLRUTINE1()
!DEC$ ATTRIBUTES DLLEXPORT::HELLODLLRUTINE1

PRINT *, "HELLO WORLD FROM FIRST SHARED LIBRARY"

END SUBROUTINE

3. Shared Library 2 : testdll2.f90
SUBROUTINE HELLODLLRUTINE2()
!DEC$ ATTRIBUTES DLLEXPORT::HELLODLLRUTINE2

PRINT *, "HELLO WORLD FROM SECOND SHARED LIBRARY"

END SUBROUTINE

4. Compile
-Mac OS
$ gfortran -c testdll1.f90 testdll2.f90
$ gfortran -shared -o testdll.dylib testdll1.o testdll2.o
$ gfortran test.f90 testdll.dylib

-Linux
$ gfortran -c testdll1.f90 testdll2.f90
$ gfortran -shared -o testdll.so testdll1.o testdll2.o
$ gfortran test.f90 testdll.so

-Windows
$ gfortran -c testdll1.f90 testdll2.f90
$ gfortran -shared -o testdll.dll testdll1.o testdll2.o
$ gfortran test.f90 testdll.dll

Intel Fortran 에서의 컴파일은 다음 문서를 참고하세요.
- Mac & Linux : https://software.intel.com/en-us/node/691876
- Windows : https://software.intel.com/en-us/node/535304

댓글

이 블로그의 인기 게시물

[Linux, AIX] 사용자 계정 생성 및 설정

[AIX] rpm 설치와 rpm 으로 패키지 설치 및 삭제

Ubuntu 에서 Fortran 시작하기