这个参数会把符号表从最终的可执行文件中删除。没有符号表,你就不能用gdb调试了。常见的用法是:
比方说你的程序由 1.c 2.c 3.c 组成,那么你编译的时候应该是这样的
gcc -g -c 1.c
gcc -g -c 2.c
gcc -g -c 3.c
然后链接成可执行文件
gcc -o test 1.o 2.o 3.o
此时生成的 test 是可以用gdb来调试的,因为它包括了符号表等调试信息。
但是如果你用
gcc -s -o test_s 1.o 2.o 3.o
生成的 test_s 就不能调试了,因为-s参数把符号表等信息都从可执行文件中去除了。
此时你比较一下 test 和 test_s ,虽然功能是完全一样的,但是 test_s 的尺寸要小很多,就是因为符号表被去除的原因。