LinuxでFortranで共有ライブラリを動的に作成してリンクする方法を理解しようとしています。Fortranでの共有ライブラリ、最小限の例が機能しない
私は2つのファイルを持っている:最初の1、liblol.f90
は、次のようになります。私はgfortran -shared -fPIC -o liblol.so liblol.f90
秒ファイル、main.f90
でコンパイル
subroutine func()
print*, 'lol!'
end subroutine func
、次のようになります。
program main
call func()
end program main
gfortran -L. -llol main.f90 -o main
というコマンドでコンパイルしようとすると、次のエラーが表示されます。
/tmp/ccIUIhcE.o: In function `MAIN__':
main.f90:(.text+0xa): undefined reference to `func_'
collect2: ld returned 1 exit status
それは「未定義参照」と言う理由nm -D liblol.so
の出力は私にこれを提供しますので、私は、理解していない:
w _Jv_RegisterClasses
0000000000201028 A __bss_start
w __cxa_finalize
w __gmon_start__
0000000000201028 A _edata
0000000000201038 A _end
0000000000000778 T _fini
U _gfortran_st_write
U _gfortran_st_write_done
U _gfortran_transfer_character_write
0000000000000598 T _init
00000000000006cc T func_
は、必要に応じて他のパラメータはありますか?