dlopen 失败:无法找到 "libgsl.so" 引用的符号 "cblas_sdsdot"

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

我按照 question 中提供的答案,使用 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"
}

我在你的另一个 post 上也回复了 gsl。请按照该程序进行。我希望它能对您有所帮助,并且您可以在 android 应用程序中轻松使用该 static 库。 这是