【问题标题】:How and where does clang use llvm?clang 如何以及在哪里使用 llvm?
【发布时间】:2020-08-30 16:11:49
【问题描述】:

当使用这样的命令时:

clang -### -O3 -a.c

然后,它将输出以下内容:

clang version 1.1 (branches/release_27)
Target: x86_64-unknown-linux-gnu
Thread model: posix
 "/tensorflow/bin/llvm+clang-2.7/bin/clang" "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-S" "-disable-free" "-main-file-name" "a.c" "-mrelocation-model" "static" "-mdisable-fp-elim" "-mconstructor-aliases" "-munwind-tables" "-target-cpu" "x86-64" "-resource-dir" "/tensorflow/bin/llvm+clang-2.7/lib/clang/1.1" "-O3" "-fmessage-length" "141" "-fgnu-runtime" "-fdiagnostics-show-option" "-fcolor-diagnostics" "-o" "/tmp/cc-w9Hpfd.s" "-x" "c" "a.c"
 "/usr/bin/gcc" "-O3" "-c" "-m64" "-o" "/tmp/cc-8haDzc.o" "-x" "assembler" "/tmp/cc-w9Hpfd.s"
 "/usr/bin/gcc" "-O3" "-m64" "-o" "a.out" "/tmp/cc-8haDzc.o"

所以,我们可以看到llvm(llvm-2.7)的早期版本使用了gcc的汇编器和链接器。

但是,clang 如何、何时、何地使用 llvm?

clang 在clang -cc1 中使用llvm 吗?

如何证明? (文档或命令行输出都可以作为证据。但我找不到。)

我认为 llvm+clang 是一个灵活的工具链,我可以找到许多从 C 程序生成可执行文件的方法。

提前致谢。

【问题讨论】:

  • Clang 使用 LLVM 作为库,即 LLVM 是 clang 可执行文件的一部分。
  • @AlexDenisov 出于好奇,它真的是静态链接的吗?
  • 仅供参考:您可以使用nm 和/或ldd 来回答此类问题,几乎可以使用任何工具。
  • @JoseFernandoLopezFernandez 这取决于构建:它可以静态链接或动态链接。

标签: c gcc compiler-construction clang llvm


【解决方案1】:

用途:

clang -v -o demo a.c

-v 为您提供了很多信息,包括/usr/lib 中使用的llvm 版本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 2013-01-29
    • 2016-09-24
    • 1970-01-01
    • 2023-04-02
    • 2019-12-21
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多