android+链接器,Android NDK链接器错误路径

我目前正在使用使用共享库的NDK项目。我有两个共享库来集成:libsatprotocol.so和libsat-tanca.so。Android NDK链接器错误路径

所以我添加到我的Android.mk这些库,所以我可以做一个包装。对于libsatprotocol,一切工作正常。但对于libsat-TANCA,我得到Android的崩溃:

java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "/home/lucas/Rockspoon/satlib/Android/app/src/main/obj/local/armeabi/libsat-tanca.so" needed by "libsat-jni.so"; caused by library "/home/lucas/Rockspoon/satlib/Android/app/src/main/obj/local/armeabi/libsat-tanca.so" not found

at java.lang.Runtime.loadLibrary(Runtime.java:371)

at java.lang.System.loadLibrary(System.java:989)

因此,奇怪的是,我这条道路在图书馆我的电脑路径,并没有从那里得到它的线索。如果我删除依赖关系的libsat-tanca,它可以正常工作(在libsatprotocol中)。

这里是我的Android.mk:

LOCAL_PATH := $(call my-dir)

#LOCAL_ALLOW_UNDEFINED_SYMBOLS=true

include $(CLEAR_VARS)

LOCAL_MODULE := sat-tanca

LOCAL_SRC_FILES := tanca/$(TARGET_ARCH_ABI)/libsat-tanca.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := sat-dimep

LOCAL_SRC_FILES := dimep/$(TARGET_ARCH_ABI)/libsatprotocol.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := sat-jni

LOCAL_SRC_FILES := satlib.c

LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -lz -llog

LOCAL_SHARED_LIBRARIES := sat-tanca sat-dimep

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_ABI := armeabi #armeabi-v7a mips x86 x86_64

LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libsatprotocol.so $(TARGET_ARCH_ABI)/libsat-tanca.so

SATControl.java

static {

System.loadLibrary("sat-jni");

}

的build.gradle(APP)

应用插件:'com.android.application'

android {

compileSdkVersion 23

buildToolsVersion "23.0.3"

defaultConfig {

applicationId "com.rockspoon.libraries.satlib"

minSdkVersion 19

targetSdkVersion 23

versionCode 1

versionName "1.0"

ndk {

moduleName "sat-jni"

}

}

sourceSets.main {

jni.srcDirs = [] // This prevents the auto generation of Android.mk

jniLibs.srcDir 'src/main/libs' // This is not necessary unless you have precompiled libraries in your project.

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

task buildNative(type: Exec, description: 'Compile JNI source via NDK') {

def ndkDir = android.ndkDirectory

commandLine "$ndkDir/ndk-build",

'-C', file('src/main/jni').absolutePath, // Change src/main/jni the relative path to your jni source

'-j', Runtime.runtime.availableProcessors(),

'all',

'NDK_DEBUG=1'

}

task cleanNative(type: Exec, description: 'Clean JNI object files') {

def ndkDir = android.ndkDirectory

commandLine "$ndkDir/ndk-build",

'-C', file('src/main/jni').absolutePath, // Change src/main/jni the relative path to your jni source

'clean'

}

clean.dependsOn 'cleanNative'

tasks.withType(JavaCompile) {

compileTask -> compileTask.dependsOn buildNative

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.4.0'

}

任何想法为什么它只链接libsat-tanca.so与我的PC路径?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值