【发布时间】:2017-04-20 15:22:02
【问题描述】:
当我使用 clang 编译一个简单的 hello world 程序时,在 elf64 文件的 cmets 中我仍然可以找到与 GCC 相关的信息。为什么?我使用的是 clang 而不是 gcc。
我使用的是 ubuntu 16.04。
username@ubuntu:~$ clang++ -stdlib=libc++ test.cpp
username@ubuntu:~$ objdump --full-contents --section=.comment a.out
a.out: file format elf64-x86-64
Contents of section .comment:
0000 4743433a 20285562 756e7475 20352e34 GCC: (Ubuntu 5.4
0010 2e302d36 7562756e 7475317e 31362e30 .0-6ubuntu1~16.0
0020 342e3429 20352e34 2e302032 30313630 4.4) 5.4.0 20160
0030 36303900 636c616e 67207665 7273696f 609.clang versio
0040 6e20342e 302e3020 28746167 732f5245 n 4.0.0 (tags/RE
0050 4c454153 455f3430 302f6669 6e616c29 LEASE_400/final)
0060 00 .
username@ubuntu:~$
test.cpp 是:
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << argc << std::endl;
return 0;
}
我也跑了
username@ubuntu:~$ sudo update-alternatives --config c++
[sudo] password for username:
There are 2 choices for the alternative c++ (providing /usr/bin/c++).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/g++ 20 auto mode
* 1 /usr/bin/clang++-libc++ 5 manual mode
2 /usr/bin/g++ 20 manual mode
Press <enter> to keep the current choice[*], or type selection number:
username@ubuntu:~$
这样好吗?为什么?
【问题讨论】:
-
您也应该查看 clang 源代码。这很有趣;)