DLPon失败:找不到"libgsl.so"引用的符号"cblas_sdsdot"

dlopen failed: cannot locate symbol "cblas_sdsdot" referenced by "libgsl.so"

本文关键字:符号 cblas sdsdot 引用 so 失败 找不到 libgsl DLPon      更新时间:2023-10-16

根据问题的答案,我使用arm-linux-androideabi编译器对android的gsl进行了交叉编译。我在/home/username/AndroidGSL中安装了库。我检查了file命令,它给了我

libgsl.so: symbolic link to `libgsl.so.0.14.0' 

所以我对libgsl.so.0.14.0再做一次,得到这个

libgsl.so.0.14.0: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), not stripped

这意味着它被正确编译为android。然后我检查了nm命令

nm libgsl.so | grep cblas_sdsdot

和我在库中找到了这个符号。

U cblas_sdsdot

这就是我加载库的方式。

static
{
        System.loadLibrary("gnustl_shared");
        System.loadLibrary("gslcblas");
        System.loadLibrary("gsl");
}

我的Linux是64位的,我的gradle文件看起来像这样

compileSdkVersion 21
    buildToolsVersion '22.0.1'
    defaultConfig {
        applicationId "com.example.user.ndksample"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
}

我也回复了你关于gsl的另一个帖子。请按程序办理。我希望它能帮助你,你可以很容易地在你的android应用程序中使用static库。这里是链接