HarmonyOS 鸿蒙Next编译产物进行strip

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next编译产物进行strip 构建链路没有配置对so产物进行strip,导致产物过大,是否有方法支持在构建链路中配置对so进行strip

2 回复

sdk有llvm-strip工具可实现该功能,具体使用可参考开源文档,华为没有修改过。https://docs.oracle.com/cd/F16636_01/html/E71066/llvm-strip-1.html

大概介绍如下:

llvm-strip是一个用于剥离LLVM目标文件中的符号表和调试信息的工具。它可以通过以下命令使用:

llvm-strip [options] file…

其中,file是要剥离符号表和调试信息的目标文件,options是一些可选参数,例如:

  • -o file:指定输出文件名。
  • -R section:从目标文件中删除指定的节。
  • -S:删除所有符号表。
  • -g:删除所有调试信息。
  • -N symbol:保留指定的符号。
  • -K symbol:从目标文件中删除指定的符号。

修改ohos.toolchain.cmake可达到相关效果,如:加-s可以默认strip ,set(CMAKE CXX FLAGS “${OHOS_C_COMPILER FLAGS} ${OHOS_CXX COMPILER FLAGS} $【CMAKE CXX FLAGS] -D__MUSL_ -s”)

或在build-profile.json5中的externalNativeOptions字段中的cppFlags字段配置“-s”参数

更多关于HarmonyOS 鸿蒙Next编译产物进行strip的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,对编译产物进行strip操作主要是为了减小最终生成的可执行文件或库文件的大小,移除其中的符号表、调试信息等非必要内容。strip操作在鸿蒙系统中可以通过特定的工具链命令来实现,以下是基本的操作流程:

  1. 定位编译产物:首先,需要确定你的编译产物(如可执行文件或库文件)的具体位置。这些文件通常位于编译输出的目录中。

  2. 使用strip工具:鸿蒙系统提供了strip工具,用于执行strip操作。你可以在命令行中通过以下方式调用该工具(假设strip命令已经包含在系统路径中):

    strip [选项] 文件名
    

    其中,[选项]可以是控制strip行为的参数,如-s(移除所有符号)或-g(仅移除调试符号)。文件名则是你要处理的编译产物的路径。

  3. 验证结果:执行strip操作后,你可以使用文件大小比较或查看工具来验证strip是否成功。通常,strip后的文件会比strip前的文件小。

请注意,strip操作是不可逆的,一旦执行,就无法恢复被移除的符号和调试信息。因此,在执行strip操作之前,请确保你已经备份了原始文件或不再需要这些信息。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部