为了账号安全,请及时绑定邮箱和手机立即绑定

cmake编译.so库体积非常大,求解答

cmake编译.so库体积非常大,求解答

湖上湖 2019-02-23 12:43:20
最近用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 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

看看是不是没去掉调试信息,strip还是什么flag来着,用这个关键字谷歌一下

查看完整回答
反对 回复 2019-03-01
?
弑天下

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")

查看完整回答
反对 回复 2019-03-01
?
森林海

TA贡献2011条经验 获得超2个赞

同样遇到这个问题了,楼主怎么解决的?
cmake设置了为release,但是打出的包却是debug的包,非常大

查看完整回答
反对 回复 2019-03-01
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

大神怎么解决的,可以把详细步骤给描述下?

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 1720 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信