今天看一个Makefile,
CROSS_COMPILE=arm-linux-
STRIP = $(CROSS_COMPILE)strip
arm-linux-strip是什么东西没见过,只见过arm-linux-gcc
估计和arm-linux-gcc一样是一个工具吧,查了网上资料,和少。
想既然有arm-linux-gcc有gcc
那么有arm-linux-strip就有strip
以下内容来自:http://www.5dlinux.com/article/11/2008/linux_22217.
UNIX下文件压缩命令compress大家都比较熟悉了,它的压缩率比较高,和tar命令结合使用来做数据备份是最合适不过了。但compress压缩也有缺点,就是被压缩后的文件需要用命令uncompress解压后才能正常使用。而用strip命令就没有这个问题,它能清除执行文件中不必要的标示符及调试信息,可减小文件大小而不影响正常使用。但与compress
不同的是,文件一旦strip后就不能恢复原样了,所以strip是一个减肥工具而不是压缩工具。而且,被strip后的文件不包含调试信息,就不能用dbx来调试程序了。现在让我们来具体效果如何,看下面一个程序:
#include
main()
{
printf("hello, world
");
}
用cc编译以后长度为46176字节,用strip后变为了30648,足足减小了 1/3,而且仍然可以正常执行。除了用strip外,用共享库也是减小执行文件长度的方法。
注:
1.如果文件大小没有减小,那就是已经strip过了.
2.cc 编译时加上"-s"参数,具有同样的作用。
四、其他编译工具
1.arm-linux-as:编译ARM汇编程序。
2.arm-linux-ar:把多个.o文件合并成一个.o文件或静态库文件(.a文件)。
3.arm-linux-ranlib:为库文件建立索引,相当于arm-linx-ar -s。
4.arm-linux-ld:连接器(Linker),把多个.o文件或库文件连接成一个可执行文件。
5.arm-linux-objcopy:转换可执行文件的格式。
6.arm-linux-strip:去掉elf可执行文件的信息。
7.arm-linux-gcc:编译.c或.s头的C文件或汇编程序。
8.arm-linux-nm:列出目标文件的符号清单。