Can anyone explain why gcc is adding the .comment and .note.gnu.property sections in the object code, and how can I tell to gcc not to add them, is it possible?Thanks.
rm5edbpk1#
为什么gcc要添加.comment和. note.gnu.property部分您可以检查.comment区段的内容,例如readelf -x.comment:
.comment
readelf -x.comment
echo "int foo() { return 42; }" | gcc -xc - -c -o foo.o readelf -x.comment foo.o Hex dump of section '.comment': 0x00000000 00474343 3a202844 65626961 6e203131 .GCC: (Debian 11 0x00000010 2e322e30 2d313029 2031312e 322e3000 .2.0-10) 11.2.0.
显然,“为什么”是为了更容易理解什么编译器产生了目标文件。我不相信有一个GCC标志来抑制这个,但是objcopy --remove-section .comment foo.o bar.o会去掉它。.note.gnu.property可以类似的方式变成removed。下面是它可能包含的内容的discussion。
objcopy --remove-section .comment foo.o bar.o
.note.gnu.property
sgtfey8w2#
tks makred it,objcopy -O binary -R .note -R .comment -R .note.gnu.property foo,elf格式转换为二进制,大小从129M到4K
objcopy -O binary -R .note -R .comment -R .note.gnu.property foo
2条答案
按热度按时间rm5edbpk1#
为什么gcc要添加.comment和. note.gnu.property部分
您可以检查
.comment
区段的内容,例如readelf -x.comment
:显然,“为什么”是为了更容易理解什么编译器产生了目标文件。
我不相信有一个GCC标志来抑制这个,但是
objcopy --remove-section .comment foo.o bar.o
会去掉它。.note.gnu.property
可以类似的方式变成removed。下面是它可能包含的内容的discussion。
sgtfey8w2#
tks makred it,
objcopy -O binary -R .note -R .comment -R .note.gnu.property foo
,elf格式转换为二进制,大小从129M到4K