如何在Android Studio 2.2.2中添加gradle native library(libelf)依赖项

时间:2016-11-01 05:02:21

标签: c android-studio android-gradle elf

我正在将纯c项目移植到android 5.1.1 API 22.原始项目有Android.mk,工作正常。我跟着the guild到端口,但新创建的项目无法正确链接库libelf。我创建了一个新模块,尝试使用gradle链接libelf。这是gradle文件:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"

    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        ndkBuild {
            path '../MyProject/Android.mk'
        }
    }
} // android

// The dependencies block is a part of the standard Gradle configuration (that is why it is placed outside of the android block)
// and defines all dependencies for an app or library. By default, a new Android app has a dependency on all the JAR files in
// the libs directory. Depending on the options you select in the new project wizard,
// it might also depend on the AppCompat library.
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
}

在AOSP中,我可以看到头文件位于:external/elfutils/0.153/libelf

任何人都知道在gradle中添加库libelf依赖的正确方法吗?

以下是我遇到的错误:

Error:(43) undefined reference to `elf_version'
Error:(54) undefined reference to `elf_begin'
Error:(60) undefined reference to `elf_kind'
Error:(64) undefined reference to `elf_getshdrstrndx'
Error:(65) undefined reference to `elf_errno'
Error:(65) undefined reference to `elf_errmsg'
Error:(56) undefined reference to `elf_errno'
Error:(56) undefined reference to `elf_errmsg'
Error:(117) undefined reference to `elf_end'
Error:(71) undefined reference to `elf_nextscn'
Error:(83) undefined reference to `elf64_getshdr'
Error:(90) undefined reference to `elf_strptr'
Error:(97) undefined reference to `elf_getdata'
Error:(85) undefined reference to `elf_errno'
Error:(85) undefined reference to `elf_errmsg'
Error:(92) undefined reference to `elf_errno'
Error:(92) undefined reference to `elf_errmsg'
Error:(99) undefined reference to `elf_errno'
Error:(99) undefined reference to `elf_errmsg'
Error:error: linker command failed with exit code 1 (use -v to see invocation)

构建环境:
系统:Ubuntu 16.04:LTS
Android Studio版本:2.2.2
Android插件版本:2.2.2
Gradle版本:2.14.1

目标Android信息:
Android版:5.1.1
API级别:22

感谢您的帮助,

0 个答案:

没有答案