Lenguaje mixto enlazando estáticamente con gfortran y gcc

Tengo un código escrito en C y Fortran que quiero compilar en un ejecutable enlazado estáticamente. Si compilo el código dinámicamente (usando el-fno-underscoring opción para gfortran), todo funciona bien. Sin embargo, quiero vincularlo a un archivo .so, vincular estáticamente la mayoría de las bibliotecas necesarias, y luego vincularlo dinámicamente alibkrb5, muy parecido al método descrito enesta entrada de blog.

Seguí los pasos de la publicación del blog anterior y logré compilar la biblioteca .so sin ningún problema.nm muestra que está en buena forma, con mis subrutinas Fortran y funciones C que se muestran:

[...]001020b9 T turnover
[...]000d31ea T initio

La primera función está escrita en Fortran y la segunda en C. No tienen guiones bajos ni nada, por lo que deberían vincularse. Mi programa principal (en Fortran) se compila como los otros archivos de origen de Fortran. Cuando intento enlazar, sin embargo, me sale un error:

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 devolvió 1 estado de salida

Enmain_program.o, Puedo ver que hay

00000000 T MAIN__

Todo se ve en orden, entonces ¿por qué no está enlazando?

Respuestas a la pregunta(1)

Su respuesta a la pregunta