Compilation 请告知“setjmp、longjmp和其他指定为”的符号;W";(弱)在libc.a中

Compilation 请告知“setjmp、longjmp和其他指定为”的符号;W";(弱)在libc.a中,compilation,reference,fortran,undefined,Compilation,Reference,Fortran,Undefined,我试图交叉编译Fortran代码以在x86_64处理器上运行,并为此构建了交叉编译器x86_64-linux-android-gfortran。我在编译时使用了-static标志,因为根据以前的经验,我就是这样成功地在Android设备上执行生成的二进制文件的。我的问题是:在构建一个Fortran模块时,我得到了对_setjmp、longjmp和其他一些模块的未定义引用。我已经链接到编译版,Android NDK修订版21,libc.a。当我打开libc.a归档文件并对生成的对象文件执行“nm*

我试图交叉编译Fortran代码以在x86_64处理器上运行,并为此构建了交叉编译器x86_64-linux-android-gfortran。我在编译时使用了-static标志,因为根据以前的经验,我就是这样成功地在Android设备上执行生成的二进制文件的。我的问题是:在构建一个Fortran模块时,我得到了对_setjmp、longjmp和其他一些模块的未定义引用。我已经链接到编译版,Android NDK修订版21,libc.a。当我打开libc.a归档文件并对生成的对象文件执行“nm*.o”时,我看到_setjmp和longjmp被定义为“W”(弱)。有办法解决这个问题吗?尽管检查了一个定义,我还是不明白“弱”是什么意思。请问,有人能给我一些建议吗?我该如何解决? 蒂亚,
Steve

为了澄清,libc.a来自android-ndk-r21d/platforms/android-30/arch-x86_64/usr/lib64。我看到android-ndk-r21d/platforms/android-30/arch-x86_64/usr/lib64/libc。因此,setjmp和longjmp被定义为“T”,也就是说,定义为(不像libc.a那样弱)。即使我使用“gcc-static”进行编译,是否有任何方法可以包含libc.so中定义的符号_setjmp和longjmp,而不是libc.a中未定义的(弱)符号_setjmp和loingjmp?如果没有,那么有人可以为_setjmp和longjmp提供一些C源代码,以便我可以从该源代码构建lib.a文件吗?谢谢。我只是想澄清一下,libc.a来自android-ndk-r21d/platforms/android-30/arch-x86_64/usr/lib64。我看到android-ndk-r21d/platforms/android-30/arch-x86_64/usr/lib64/libc。因此,setjmp和longjmp被定义为“T”,也就是说,定义为(不像libc.a那样弱)。即使我使用“gcc-static”进行编译,是否有任何方法可以包含libc.so中定义的符号_setjmp和longjmp,而不是libc.a中未定义的(弱)符号_setjmp和loingjmp?如果没有,那么有人可以为_setjmp和longjmp提供一些C源代码,以便我可以从该源代码构建lib.a文件吗?谢谢