我正在尝试确定编译各种可执行文件时使用了哪个版本的 GCC。为此,我查看了 ELF 文件的注释部分。我以为我只会遇到一个 GCC 版本,但我得到了以下输出。
GCC: (GNU) 4.1.2 20080704 (Red Hat 4.1.2-55)
GCC: (GNU) 4.8.2 20140120 (Red Hat 4.8.2-15)
GCC: (GNU) 4.1.2 20080704 (Red Hat 4.1.2-55)
什么原因导致有三个 GCC 注释和两个独立的版本?
注意:此文件位于 Python Wheel 中
答案1
通过安装 devtoolset-6 并运行,我能够在 centos/devtoolset-7-perftools-centos7 上重现类似的情况:
$ /opt/rh/devtoolset-6/root/usr/bin/gcc -Wall test.c
$ strings -a a.out | grep "GCC: ("
GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-36)
GCC: (GNU) 6.3.1 20170216 (Red Hat 6.3.1-3)
这可能是注释生成方式的一个错误,因为预期的输出只是第二行