我想知道这两者有什么区别:

  • gcc -s:从可执行文件中删除所有符号表和重定位信息。

  • strip:从对象文件中丢弃符号。

他们有相同的含义吗?

您使用哪一个:

  • 减少可执行文件的大小?
  • 加快运行速度?

答案

gcc作为编译器/链接器,-s选项是完成的链接时。它也不可配置 - 它具有一组已删除的信息,不再是。

strip是可以在已经编译的对象文件上运行的东西。它还具有多种命令行选项,您可以使用它们来配置将删除哪些信息。例如,-g仅带调试信息gcc -g添加。

注意strip不是bash命令,尽管您可能是从bash shell中运行的。这是与Bash完全分开的命令,该命令是GNU二进制实用程序套件的一部分。

来自: stackoverflow.com