Gcc 编译时如何从输出中排除源文件元数据?

Gcc 编译时如何从输出中排除源文件元数据?,gcc,compilation,metadata,executable,binaryfiles,Gcc,Compilation,Metadata,Executable,Binaryfiles,例如: $ gcc -O3 foobar.c -o foobar $ grep 'foobar\.c' foobar Binary file foobar matches 如何从gcc和其他编译器的输出中排除这些不必要的、暴露的元数据?无论输出是程序集文件、对象文件还是可执行文件,它都会出现。man strip(1) I是否可以剥离对象文件,然后仍然能够链接它?我并不是真的打算去掉实际的函数标签。@Matt是的,我相信是这样条带-条带调试aaa.o应删除调试信息,但保留完整的功能标签。您可以使

例如:

$ gcc -O3 foobar.c -o foobar
$ grep 'foobar\.c' foobar
Binary file foobar matches
如何从
gcc
和其他编译器的输出中排除这些不必要的、暴露的元数据?无论输出是程序集文件、对象文件还是可执行文件,它都会出现。

man strip(1)


I
是否可以剥离对象文件,然后仍然能够链接它?我并不是真的打算去掉实际的函数标签。@Matt是的,我相信是这样<代码>条带-条带调试aaa.o
应删除调试信息,但保留完整的功能标签。您可以使用
nm
readelf
实用程序在.o中签入符号。此外,对于共享对象,您可能希望选中
--删除不需要的
选项
> strip -s a.out