参考:https://qa.1r1g.com/sf/ask/94441651/
https://blog.csdn.net/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 了