【发布时间】:2020-05-25 21:47:09
【问题描述】:
使用命令clang -### a.c可以输出clang a.c调用的命令。
对我来说,它在我的屏幕上输出以下内容(关注最后三行):
clang version 1.0 (https://llvm.org/svn/llvm-project/cfe/branches/release_26 exported)
Target: x86_64-unknown-linux-gnu
Thread model: posix
"/usr/local/bin/llvm+clang-2.6-x86_64-linux/bin/../libexec/clang-cc" "-triple" "x86_64-unknown-linux-gnu" "-S" "-disable-free" "-main-file-name" "a.c" "--relocation-model" "static" "--disable-fp-elim" "--unwind-tables=1" "--mcpu=x86-64" "--fmath-errno=1" "-fdiagnostics-show-option" "-o" "/tmp/cc-yffqSv.s" "-x" "c" "a.c"
"/usr/bin/gcc" "-c" "-m64" "-o" "/tmp/cc-pa2Qo4.o" "-x" "assembler" "/tmp/cc-yffqSv.s"
"/usr/bin/gcc" "-m64" "-o" "a.out" "/tmp/cc-pa2Qo4.o"
在:/usr/local/bin/llvm+clang-2.6-x86_64-linux/bin/../libexec/clang-cc" "-triple" "x86 ...... 行中,显示命令clang 调用了这个:/libexec/clang-cc。
它(文件“libexec/clang-cc”)有什么作用?
还有一个相关的问题我想问:
是否:命令clang使用项目前端“clang”,后端使用“gcc”?
因为我发现上面的最后两行代码叫做“/usr/bin/gcc”。
我已经搜索了好几个小时,你能帮我吗?
提前致谢。
【问题讨论】:
-
IIRC 从广义上讲,GCC 通过将源代码转换为抽象语法树(“前端”)、应用优化等,然后将其转换为特定于系统的程序集(“后端”)来工作。因此,根据这些定义,您将 clang 用于前端和后端。
标签: c linux compiler-construction clang llvm