cmake/gcc:strip缩减程序体积

82 篇文章 20 订阅
42 篇文章 28 订阅

方法1

cmake生成的Makefile中有一个target名为intall/strip可以将install的可执行程序执行strip,执行make help,就可以看到

$ make help
The following are some of the valid targets for this Makefile:
... all (the default if no target is provided)
... clean
... depend
... install
... list_install_components
... install/strip
... install/local
... rebuild_cache
... edit_cache

所以执行make install/strip安装程序时就会自动执行strip
如果要深究细节,可以查看Makefile代码,install/strip 是这样写的

install/strip: preinstall
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
	/opt/toolchains/mips-gcc520-glibc222/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip

上面的代码可以看出安装动作实际是由cmake_install.cmake来实现的,
上面install/strip执行cmake时调用的脚本 cmake_install.cmake中会根据CMAKE_INSTALL_DO_STRIP的值决定是否执行strip命令,如下是cmake_install.cmake脚本中的代码片段

  foreach(file
      "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./app-1.3.1"
      "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/./app"
      )
    if(EXISTS "${file}" AND
       NOT IS_SYMLINK "${file}")
      if(CMAKE_INSTALL_DO_STRIP)
        execute_process(COMMAND "/opt/toolchains/mips-gcc520-glibc222/bin/mips-linux-gnu-strip" "${file}")
      endif()
    endif()

方法2

网上找到这个stackoverflow上的帖子《How to config cmake for strip file》,才知道gcc本身有一个-s连接选项(Link Option)用于删除执行程序的符号表和重定位信息。
在这里插入图片描述

参见gcc官方手册《3.14 Options for Linking》

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值