如何对库和可执行文件进行裁减
strip
如果生成的可执行文件或库比较大,这时候就可以使用strip命令进行裁减,在嵌入式开发中,如果使用的交叉编译工具是arm-linux,则命令 是arm-linux-strip,如果是arm-uclibc-linux,则命令是arm-uclibc-linux-strip.
因为开发板上的空间本来就很少,使用这个命令可以进一步减少可执行文件的大小,从而可以在开发板上可以存放更过的可执行文件。下面简单介绍一下这个命令。
strip的主要作用是把编译的库文件或者可执行文件里的一些调试信息和符号信息去除。
使用strip对库文件、可执行文件进行操作,库文件、可执行文件中的一些与正常运行无关的调试信息和符号信息会被剔除掉,而且操作前和操作后文件的大小 变化特别明显,一般可以减少1/3或更多,所以在嵌入式的平台上是非常有用的。但是在开发过程并不提倡这一做法,因为使用strip后,使用gdb时就无 法获得调试信息了。
1 | strip |
为了减少运行时库的大小,我们应该使用交叉编译版本即arm-linux-gcc 的strip工具来处理根文件系统的库文件,把二进制文件中的包含的符号表和调试信息删除掉。如下所示:
1 | #arm-linux-strip /home/su/rootfs/lib/*.so |
strip可以作用于可重定位文件、可执行文件、共享文件,默认选项会去除.symbol节的内容以及.debug节的内容,因此尽量只对可执行文件执行strip而不要对静态库或动态库等目标文件strip。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 yxhlfx@163.com
文章标题:如何对库和可执行文件进行裁减
本文作者:红尘追风
发布时间:2019-06-03, 15:42:40
原始链接:http://www.micernel.com/2019/06/03/%E5%A6%82%E4%BD%95%E5%AF%B9%E5%BA%93%E5%92%8C%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E8%A3%81%E5%87%8F/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。