2015-06-09 3 views
1

Я перекрестно скомпилировал gsl для android, используя arm-linux-androideabi компилятор, следующий за ответом, приведенным в этом question. Я установил библиотеку в /home/username/AndroidGSL. Я проверил команду file и он дал мнеdlopen failed: не удалось найти символ «cblas_sdsdot», на который ссылается «libgsl.so»

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" 
} 
+0

«U» на выходе nm сообщает вам, что символ не определен в этом объекте. Возможно, вам нужно загрузить библиотеку cblas перед библиотекой gsl? –

+0

Я тоже сделал это, но все равно не повезло. Любое другое предложение? –

+0

Можете ли вы проверить с помощью 'nm', что символ присутствует в используемой библиотеке gslcblas (должен ли отображаться' T' или 't', если это то, что я принимаю за функцию)? –

ответ

0

Я ответил на ваш другой пост также о gsl. Следуйте этой процедуре. Я надеюсь, что это поможет вам, и вы можете легко использовать этот static lib в своем приложении для Android.

Смежные вопросы

 Смежные вопросы