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

771 views Asked by At

I cross compiled gsl for android using arm-linux-androideabi compiler following the answer provided in this question. I installed the library in /home/username/AndroidGSL. I checked the file command and it gave me

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

so i did again for libgsl.so.0.14.0 and got this

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

which means it is compiled properly for android. Then i checked nm command

nm libgsl.so | grep cblas_sdsdot

and i found this symbol in the library.

U cblas_sdsdot

This is how i am loading the libraries.

static
{

        System.loadLibrary("gnustl_shared");
        System.loadLibrary("gslcblas");
        System.loadLibrary("gsl");

}

My Linux is 64 bit and my gradle file looks like this

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

There are 1 answers

1
Saad Saadi On BEST ANSWER

I replied on your other post also regarding gsl. Please follow that procedure. I hope it will help you and you can easily use that static lib in your android app. Here is the link