linux 如何对库和可执行文件进行裁减
来源:互联网 发布:大数据产品经理面试题 编辑:程序博客网 时间:2024/05/17 09:26
因为开发板上的空间本来就很少,使用这个命令可以进一步减少可执行文件的大小,从而可以在开发板上可以存放更过的可执行文件。下面简单介绍一下这个命令:
主要是把编译的库文件或者可执行文件里的一些调试信息和符号信息去除。
使用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>
为了减少运行时库的大小,我们应该使用交叉编译版本即arm-linux-gcc 的strip工具来处理根文件系统的库文件,把二进制文件中的包含的符号表和调试信息删除掉。
例:
#arm-linux-strip /home/su/rootfs/lib/*.so
之前将usr/local/arm/4.3.2/arm-non-linux-gnueabi/libc/lib下的*.so文件一股脑儿copy到rootfs/lib/下,结果下载后返回“Kernel panic -not syncing: Attempted to kill init!”出错信息。后来终于想到可能是库链接出问题,重新复制usr/local/arm/4.3.2/arm-non-linux-gnueabi/libc/armv4t/lib下的文件,问题解决!
- linux 如何对库和可执行文件进行裁减
- linux 如何对库和可执行文件进行裁减
- linux 如何对库和可执行文件进行裁减
- 如何通过这句话对可执行文件进行理解???
- 裁减Linux
- linux裁减
- linux裁减
- linux下如何在终端上运行和安装可执行文件
- linux下如何在终端上运行和安装可执行文件
- linux下如何在终端上运行和安装可执行文件
- linux 如何运行一个可执行文件
- Qt选择性编译和库的裁减
- 详解 Qt 选择性编译和库裁减
- 如何对linux系统进行分区
- 如何对Linux的grub进行加密
- 如何对linux系统进行分区
- 如何对DataTable 进行检索和排序
- 如何对DataTable进行检索和排序
- ubuntu下安装QEMU
- 【转载】关于该不该上JAVA培训班的一点看法
- PL/SQL学习笔记[5]-流程控制语句
- 文件的下载
- 乔布斯情书乔布斯在今年3月份,结婚20周年时写给妻子的情书
- linux 如何对库和可执行文件进行裁减
- servlet中判断JSP中按钮问题
- 编程回忆之Android回忆(Android 调用短信服务)
- 谈谈策略
- GetLastError 和 FormatMessage搭配使用的模板
- the usage of keyword const
- 读书笔记_Rootkit技术_文件过滤驱动程序(1)
- yuntable master代码阅读
- SQL Server自动增长列重置