我已经写在C和Fortran一些代码,我想编译成静态链接的可执行文件。 如果我动态编译代码(使用-fno-underscoring
了gfortran选项),这一切工作正常。 但是,我想将其链接到一个.so文件,静态链接最需要的库中,然后动态链接到libkrb5
,非常像描述的方法这个博客帖子 。
我跟着前面的博客文章的步骤,我设法编译.so库没有任何问题。 nm
表明,它是在良好的状态,与我的Fortran子程序和显示出来的C函数:
[...]001020b9 T turnover
[...]000d31ea T initio
第一个功能是写在Fortran和C中的第二他们没有下划线或任何东西,所以他们应该联系起来。 我的主要程序(Fortran语言)编译像其他Fortran源文件。 当我试图链接,不过,我得到一个错误:
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__
一切看起来都在秩序,那么,为什么不链接?