参考:https://qa.1r1g.com/sf/ask/94441651/
https://blog.youkuaiyun.com/emdfans/article/details/26227347
一、gcc -s和strip的区别
gcc -s:从可执行文件中删除所有符号表和重定位信息.
strip:丢弃目标文件中的符号.
strip是可以在已经编译的目标文件上运行的东西.它还具有各种命令行选项,您可以使用它们来配置要删除的信息.例如,-g仅删除gcc -g添加的调试信息.
请注意,这strip不是bash命令,但您可能正在从bash shell运行它.它是一个完全独立于bash的命令,它是GNU二进制实用程序套件的一部分.
2、gcc不带-g和strip的区别
1、去掉-g,等于程序做了--strip-debug
2、strip程序,等于程序做了--strip-debug和--strip-symbol
所以strip后程序会更小点
但对于静态库.a之类的文件,只能用--strip-debug
静态编译就不能使用 strip 了
本文详细解析了gcc-s和strip两个命令的区别。gcc-s用于从可执行文件中删除所有符号表和重定位信息,而strip则可以丢弃目标文件中的符号,并通过不同的命令行选项配置要删除的信息。文章还解释了gcc不带-g参数和使用strip命令之间的差异,以及这些操作如何影响程序大小。
7992

被折叠的 条评论
为什么被折叠?



