最近用cmake替代ndk-build编译so库,编译出来的so库打出很多,ndk-build编译的400k左右,cmake编译出的达到4.5M。Gradle插件的版本是:gradle:3.0.0,gradle版本是:gradle-4.1-all.zip。build.gradle cmake 配置如下:`
ndk {
abiFilters 'armeabi','armeabi-v7a','x86'
}
externalNativeBuild {
cmake {
arguments '-DANDROID_PLATFORM=android-21',
'-DANDROID_TOOLCHAIN=clang',
'-DCMAKE_BUILD_TYPE=Release'
targets 'myso'
}
}`
CMakeLists.txt 文件配置如下:
cmake_minimum_required(VERSION 3.4.1)
set (CMAKE_CXX_STANDARD 14)
set(CMAKE_VERBOSE_MAKEFILE ON)
add_library(so SHARED IMPORTED)
set_target_properties(
so
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/so.so)
add_library(
myso
SHARED
XXX.cpp
.......
xxx.c
...
)
target_include_directories(myso PRIVATE
src
.....
)
find_library(
log-lib
log )
target_link_libraries(
myso
so
android
log
)
set(distribution_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../dis)
set_target_properties(myso
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY
"${distribution_DIR}/lib/${ANDROID_ABI}")
我用as打开两个myso.so库对比了下里面的字符,前1000行是一样的,用cmake编译出来的1000行以后多出了很多东西,总共有两万多行,不知道是什么原因造成的。有了解的大神求指教,万分感谢!
4 回答
弑天下
TA贡献1818条经验 获得超8个赞
好久没有上,贴上下我的解决方案,希望对遇到同样问题的朋友有帮助。再次感谢@darkengine.
该问题是编译过程中生成二进制码没有被剥除,需要在CMakeLists.txt中加入如下设置。
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
添加回答
举报
0/150
提交
取消