elf与动态库大小裁剪

老板最近看拼多多的包挺小的,扔了一篇文章过来让我们优化优化各自的动态库,美团这篇关于动态库大小缩减的文章,说的极好哈哈: https://tech.meituan.com/2022/06/02/meituans-technical-exploration-and-practice-of-android-so-volume-optimization.html

#按需导出符号对库大小影响大
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") 
#size: 716k->478k, 关闭rtti和lto对库大小影响大,但编译的时候挺耗时的
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")           
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -O3 -flto")
# 对section进行gc回收
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -ffunction-sections")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -ffunction-sections")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections")
# 一个相当于02级别的优化但是能影响大小的编译优化等级
##set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Oz")
##set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Oz")
posted @ 2023-12-28 21:04  woder  阅读(30)  评论(0编辑  收藏  举报