首页 > 解决方案 > UnsatisfiedLinkError: dlopen failed: library "libm.so.6" not found - Android Studio 4.0

问题描述

我曾经在我的工作区(如 /data/data/com.example.myapplication)中加载已编译的 Fortran 可执行文件,但这不再可能,因此我将代码放入共享库并使用 loadLibrary()。我正在编译一个简单的 Fortran 函数并将生成的对象文件封装在一个共享对象库中,因为从我读过的所有内容来看,Android Studio 都必须是这样。但是,当我启动模拟器并运行 Android 代码时出现问题,它会搜索所需的关联库,如 lib.so.6、linux-vdso.so.1、libgfortran.so.5、libgcc_s.so.1 、libquadmath.so.0 和 libc.so.6。我在 Android SDK 树中没有看到这些。如果我然后将 -static 标志添加到共享对象库构建中,那么我得到:

“x86_64-linux-gnueabi-ld: crtend.o: 重定位 R_X86_64_32 对 '.ctors' 在制作共享库时不能使用。使用 -fPIC 重新编译”。

GCC 编译器的整个重新编译听起来不是最好的选择。有没有办法解决?

感谢您的任何想法,史蒂夫

标签: androidfortranshared

解决方案


推荐阅读