为什么编译器版本会出现在我的ELF可执行文件中? [英] Why does the compiler version appear in my ELF executable?

查看:107
本文介绍了为什么编译器版本会出现在我的ELF可执行文件中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近在Debian Linux下使用gcc编译了一个简单的hello world C程序:

I've recently compiled a simple hello world C program under Debian Linux using gcc:

gcc -mtune=native -march=native -m32 -s -Wunused -O2 -o hello hello.c

文件大小为2980字节。我在一个十六进制编辑器中打开它,我看到以下几行:

The file size was 2980 bytes. I opened it in a hex editor and i saw the following lines:

GCC: (Debian 4.4.5-8) 4.4.5 GCC: (Debian 4.4.5-10) 4.4.5 .shstrtab .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .text .fini .rodata .eh_frame .ctors .dtors .jcr .dynamic .got .got.plt data.data .bss .comment

他们真的需要吗?没有办法减少可执行文件的大小?

Are they really needed? No way to reduce executable size?

推荐答案

这是在ELF二进制文件的注释部分。你可以去掉它:

That's in a comment section in the ELF binary. You can strip it out:

$ gcc -m32 -O2 -s -o t t.c
$ ls -l t
-rwxr-xr-x 1 me users 5488 Jun  7 11:58 t
$ readelf -p .comment t

String dump of section '.comment':
  [     0]  GCC: (Gentoo 4.5.1-r1 p1.4, pie-0.4.5) 4.5.1
  [    2d]  GCC: (Gentoo 4.5.2 p1.1, pie-0.4.5) 4.5.2


$ strip -R .comment t


$ readelf -p .comment t
readelf: Warning: Section '.comment' was not dumped because it does not exist!
$ ls -l t
-rwxr-xr-x 1 me users 5352 Jun  7 11:58 t

虽然收益微乎其微,但不知道它是否值得。

The gains are tiny though, not sure it's worth it.

这篇关于为什么编译器版本会出现在我的ELF可执行文件中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆