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
库。
这是
我按照 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
库。
这是