我想知道这两者有什么区别:
gcc -s
:从可执行文件中删除所有符号表和重定位信息。strip
:从对象文件中丢弃符号。
他们有相同的含义吗?
您使用哪一个:
- 减少可执行文件的大小?
- 加快运行速度?
答案
gcc
作为编译器/链接器,-s
选项是完成的链接时。它也不可配置 - 它具有一组已删除的信息,不再是。
strip
是可以在已经编译的对象文件上运行的东西。它还具有多种命令行选项,您可以使用它们来配置将删除哪些信息。例如,-g
仅带调试信息gcc -g
添加。
注意strip
不是bash命令,尽管您可能是从bash shell中运行的。这是与Bash完全分开的命令,该命令是GNU二进制实用程序套件的一部分。