Как связать с libgcc.a при кросс-компиляции с Android NDK r17
Я пытаюсь создать скрипт сборки cmake для нативного кода в моем приложении для Android. Я использую 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'
}