"llvm/libexec/clang-cc" 是做什么的?
What does "llvm/libexec/clang-cc" do?
使用命令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”。
我已经搜索了几个小时了,你能帮帮我吗?
提前致谢。
What does it(file "libexec/clang-cc") do?
它的输出"-o" "/tmp/cc-yffqSv.s"
表明它输出汇编。
and the back end of "gcc"?
带有 gcc
调用的最后两行是:
- 从程序集生成目标文件。
- Link 目标文件到
a.out
.
您使用的 Clang 版本似乎很旧。您可能想尝试更新的。
clang-cc
是clang C编译器,它将C程序转换为汇编语言。 [注1]。根据版本和目标,它也可以直接生成目标文件。请参阅 -integrated-as
命令行标志。
如果您的 Clang 版本没有针对您的目标体系结构的汇编器,clang
驱动程序将尝试使用系统汇编器(和链接器)。在某些系统上,这些将成为 Gcc 的一部分,尽管还有其他选项。
备注
- Clang 实际上首先将 C(或其他类 C 语言)编译为平台中立的 LLVM 中间表示 (IR),然后使用 LLVM 库将其转换为优化的特定于平台的汇编代码。这两部分就是通常所说的Clang“前端”(C⇒LLVM)和“后端”(LLVM⇒Assembler)。这些不是单独的程序
使用命令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”。
我已经搜索了几个小时了,你能帮帮我吗?
提前致谢。
What does it(file "libexec/clang-cc") do?
它的输出"-o" "/tmp/cc-yffqSv.s"
表明它输出汇编。
and the back end of "gcc"?
带有 gcc
调用的最后两行是:
- 从程序集生成目标文件。
- Link 目标文件到
a.out
.
您使用的 Clang 版本似乎很旧。您可能想尝试更新的。
clang-cc
是clang C编译器,它将C程序转换为汇编语言。 [注1]。根据版本和目标,它也可以直接生成目标文件。请参阅 -integrated-as
命令行标志。
如果您的 Clang 版本没有针对您的目标体系结构的汇编器,clang
驱动程序将尝试使用系统汇编器(和链接器)。在某些系统上,这些将成为 Gcc 的一部分,尽管还有其他选项。
备注
- Clang 实际上首先将 C(或其他类 C 语言)编译为平台中立的 LLVM 中间表示 (IR),然后使用 LLVM 库将其转换为优化的特定于平台的汇编代码。这两部分就是通常所说的Clang“前端”(C⇒LLVM)和“后端”(LLVM⇒Assembler)。这些不是单独的程序