काम नहीं करता है, मैं समझने की कोशिश कर रहा हूं कि लिनक्स के तहत फोरट्रान में साझा लाइब्रेरी को गतिशील रूप से कैसे बनाएं और लिंक करें।फोरट्रान में साझा लाइब्रेरी, न्यूनतम उदाहरण
मैं दो फ़ाइलें: पहले एक, 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_
क्या कोई अन्य पैरामीटर की जरूरत है?