Mieszany język statycznie łączący się z gfortranem i gcc

Mam kod napisany w C i Fortran, który chcę skompilować do statycznie połączonego pliku wykonywalnego. Jeśli kompiluję kod dynamicznie (używając-fno-underscoring opcja dla gfortran), wszystko działa dobrze. Chcę jednak połączyć go z plikiem .so, statycznie łącząc większość potrzebnych bibliotek, a następnie połączyć dynamicznie zlibkrb5, bardzo podobnie do metody opisanej wten wpis na blogu.

Wykonałem kroki z poprzedniego wpisu na blogu i udało mi się skompilować bibliotekę .so bez żadnych problemów.nm pokazuje, że jest w dobrej kondycji, wyświetlając moje podprogramy Fortran i funkcje C:

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

Pierwsza funkcja jest napisana w języku Fortran, a druga w C. Nie mają podkreślników ani niczego, więc powinny się łączyć. Mój główny program (w Fortran) jest kompilowany tak jak inne pliki źródłowe Fortrana. Gdy próbuję połączyć, pojawia się błąd:

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 zwrócił 1 status wyjścia

Wmain_program.o, Widzę, że jest

00000000 T MAIN__

Wszystko wygląda w porządku, więc dlaczego nie łączy?

questionAnswers(1)

yourAnswerToTheQuestion