我通过CMAKE_C_FLAGS在CMake中设置了CFLAGS.是这样设置LDFLAGS?
在尝试构建已签名的APK时,它会以~100行重复失败:
Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: PLT offset too large, try linking with --long-plt
Run Code Online (Sandbox Code Playgroud)
我在参数中添加了--long-plt:
externalNativeBuild {
cmake {
...
arguments '-DANDROID_STL=c++_static', '-Wl,--long-plt'
cppFlags "-frtti -fexceptions", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_STL=c++_shared"
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有改变任何东西.
它适用于非签名(调试)apk生成并使用arm64-v8a.
我正在处理> 1GB的本机代码,所以我猜这是主要原因.
似乎几乎没有关于此的文档或搜索结果.
是否--long-plt需要在其他地方放?如果没有,是否有其他设置可以更改?或者将代码拆分成单独的库有帮助吗?
这是CMakeLists.txt供参考:
string(REPLACE "." "/" JAVA_GEN_SUBDIR ${JAVA_GEN_PACKAGE})
set(JAVA_GEN_DIR ${Project_SOURCE_DIR}/src/main/java/${JAVA_GEN_SUBDIR}/../../../../../generated)
# configure import libs
set(distribution_DIR ${PROJECT_SOURCE_DIR}/distribution)
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
# Note: One could use a 'GLOB' here, but newly added source files won't …Run Code Online (Sandbox Code Playgroud)