Tôi đang cố gắng hiểu cách tạo và liên kết động thư viện được chia sẻ trong Fortran trong Linux.Thư viện được chia sẻ ở Fortran, ví dụ tối thiểu không hoạt động
Tôi có hai tập tin: Người đầu tiên, liblol.f90
, trông như thế này:
subroutine func()
print*, 'lol!'
end subroutine func
tôi biên dịch nó với gfortran -shared -fPIC -o liblol.so liblol.f90
Các tập tin thứ hai, main.f90
, trông như thế này:
program main
call func()
end program main
Khi tôi bây giờ cố gắng biên dịch với lệnh gfortran -L. -llol main.f90 -o main
, tôi nhận được lỗi sau:
/tmp/ccIUIhcE.o: In function `MAIN__':
main.f90:(.text+0xa): undefined reference to `func_'
collect2: ld returned 1 exit status
Tôi không hiểu tại sao nó nói "tài liệu tham khảo không xác định", vì đầu ra của nm -D liblol.so
mang lại cho tôi điều này:
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_
Có bất kỳ thông số khác cần thiết?