Я использую gfortran [GNU Fortran (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)] на Fedora 20 x86_64, чтобы скомпилировать кучу кода Fortran 77, который относится к 'iargc' функции следующим образом:Компиляция с gfortran: неопределенная ссылка на iargc_
bin2D2nc.f:31: integer iargc,strlen1
bin2D2nc.f:32: external iargc,strlen1
bin2D2nc.f:44: i=iargc()
Когда делают скрипт достигает компиляции COMAND, приведенную ниже,
gfortran -O3 -ffixed-line-length-132 -fall-intrinsics -I/home/santiago/Install/netcdf_sam/include -o bin2D2nc -I./SRC ./SRC/bin2D2nc.f ./SRC/hbuf_lib.f ./SRC/cape.f ./SRC/cin.f -L/home/santiago/Install/netcdf_sam/lib -lnetcdf -L/usr/lib64 -lpthread
Я получаю эти сообщения:
bin2D2nc.f:(.text+0x14): undefined reference to `iargc_'
collect2: error: ld returned 1 exit status
make: ** [bin2D2nc] Erro 1
Я не автор этого кода. Насколько я знаю, я правильно настроил пути библиотеки в makefile.
Я обнаружил, что «iargc» - это рутина для обратной совместимости с GNU Fotran 77, но я не понимаю его глубоко.
Может ли кто-нибудь посоветовать превзойти эту проблему?
Всегда используйте тег [tag: fortran] и добавляйте только тег версии, где необходимо различать. –
IARGC не является внешней функцией. Или это может быть одно, но вы не предоставляете его. Это неотъемлемо. Вы должны использовать 'INTRINSIC IARGC' или просто удалить' IARGC' из оператора 'EXTERNAL'. Это остатки FORTRAN 66, а не 77. Я закрою этот вопрос как дубликат после того, как найду оригинал. –
@ vladimir-f, спасибо за ваши ценные комментарии. Я думаю, вы можете оставить оба вопроса, так как они не совсем то же самое. Начинающие, как и я, вероятно, не будут видеть, что эти вопросы настолько похожи. –