Смешанный язык, статически связанный с gfortran и gcc
У меня есть некоторый код, написанный на C и Fortran, который я хочу скомпилировать в статически связанный исполняемый файл. Если я скомпилирую код динамически (используя-fno-underscoring
вариант для гфортран) все отлично работает. Однако я хочу связать его в файл .so, статически связывая большинство необходимых библиотек, а затем динамически связать сlibkrb5
очень похоже на метод, описанный вэтот блог
Я выполнил действия, описанные в предыдущем сообщении в блоге, и мне удалось без проблем скомпилировать библиотеку .so.nm
показывает, что он в хорошей форме, с моими подпрограммами на языке Fortran и функциями C, которые отображаются:
[...]001020b9 T turnover
[...]000d31ea T initio
Первая функция написана на фортране, а вторая на C. Они неПодчеркивание или что-то еще, поэтому они должны ссылаться. Моя основная программа (на Фортране) скомпилирована, как и другие исходные файлы на Фортране. Когда я пытаюсь связать, я получаю сообщение об ошибке:
gfortran -m32 main_program.o -o program_static -L./ -llibname -lkrb5 -lgssapi_krb5 -lsasl2 -lgfortran
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld вернул 1 статус выхода
Вmain_program.o
Я вижу, что есть
00000000 T MAIN__
Все выглядит по порядку, так почему это не ссылки?