我正在尝试为我的Android应用中的本机代码创建cmake构建脚本。我正在使用Android NDK r17并使用clang构建。 我面临的问题是,除非我明确编写类似的内容:
target_link_libraries(my-native-lib "-lgcc")
我会收到链接器错误:
error: undefined reference to '__aeabi_idiv'
在这种情况下,我认为libgcc.a应该自动链接。
如果不正确,是否有更好的链接方法?
这是我的Cmake脚本,非常简单:
cmake_minimum_required(VERSION 3.5)
project(JNI_LIB)
set (CMAKE_CXX_STANDARD 11)
find_package(FOO CONFIG REQUIRED)
find_package(BAR CONFIG REQUIRED)
file(GLOB JNI_HEADER "*.h*")
file(GLOB JNI_SOURCE "*.c*")
add_library(jni SHARED
${JNI_HEADER}
${JNI_SOURCE})
target_link_libraries(jni
FOO
BAR)
我的gradle构建脚本:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
defaultConfig {
applicationId "com.my.application"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_static','-DANDROID_PLATFORM=android-21'
}
}
ndk {
abiFilters "armeabi-v7a"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path 'src/main/cpp/CMakeLists.txt'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:23.0.1'
implementation group: 'com.google.protobuf', name: 'protobuf-java',
version: '3.2.0'
}