我想了解如何在Linux下動態創建並鏈接Fortran中的共享庫。Fortran中的共享庫,最小示例不起作用
我有兩個文件:第一個,liblol.f90
,看起來是這樣的:
subroutine func()
print*, 'lol!'
end subroutine func
我gfortran -shared -fPIC -o liblol.so liblol.f90
第二個文件,main.f90
編譯它,看起來是這樣的:
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_
是否有其他任何需要的參數?