linux 如何对库和可执行文件进行裁减

【转载自: http://hi.baidu.com/bd_dream_go_on/blog/item/64913b254d395c3d8644f93f.html



linux 如何对库和可执行文件进行裁减


如果生成的可执行文件或库比较大,这时候就可以使用strip命令进行裁减,在嵌入式开发中,如果使用的交叉编译工具是arm-linux,则命令 是arm-linux-strip,如果是arm-uclibc-linux,则命令是arm-uclibc-linux-strip.

    因为开发板上的空间本来就很少,使用这个命令可以进一步减少可执行文件的大小,从而可以在开发板上可以存放更过的可执行文件。下面简单介绍一下这个命令:

   主要是把编译的库文件或者可执行文件里的一些调试信息和符号信息去除。

   使用strip对库文件、可执行文件进行操作,库文件、可执行文件中的一些与正常运行无关的调试信息和符号信息会被剔除掉,而且操作前和操作后文件的大小 变化特别明显,一般可以减少1/3或更多,所以在嵌入式的平台上是非常有用的。但是在开发过程并不提倡这一做法,因为使用strip后,使用gdb时就无 法获得调试信息了

  

用法: strip <option(s)> file(s)

strip一般有以下选项

-I --input-target=<bfdname>               假定输入文件的格式为<bfdname>
-O --output-target=<bfdname>              以<bfdname>格式创建输出文件
-F --target=<bfdname>                     设置输入、输出的文件格式为<bfdname>
-p --preserve-dates                       复制上次修改或者操作的时间到输出文件中
-R --remove-section=<name>                删除输出文件中<name>段信息
-s --strip-all                            删除所有符号信息和重定位信息
-g -S -d --strip-debug                    删除所有调试信息和段信息
--strip-unneeded                       删除所有重定位中不需要的符号信息
--only-keep-debug                      删除调试信息以外的其他所有信息
-N --strip-symbol=<name>                  不拷贝符号信息<name>
-K --keep-symbol=<name>                   不去除符号信息<name>
-w --wildcard                             在符号中使用通配符
-x --discard-all                          去除所有非全局符号
-X --discard-locals                       去除所有编译产生的符号
-v --verbose                              列出所有修改过的所有目标文件
-V --version                              显示版本号                    
-h --help                                 显示帮助 
-o <file>                                 把输出的文件名修改成<file>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值