【问题标题】:How can I compile, assemble and link a C++ file using Clang?如何使用 Clang 编译、组装和链接 C++ 文件?
【发布时间】:2021-03-19 04:42:00
【问题描述】:

我从事编码工作已超过 5 年,现在我想远离 IDE,尝试一个没有 IDE 的项目。我有开始需要的东西(我认为),一个 HelloWorld.cpp 文件,打开了 Windows 命令提示符并安装了 Clang。

现在我有了这些东西,我的问题是 - 我需要在命令提示符中输入什么内容才能让 Clang 将我的 C++ 代码放入 HelloWorld.cpp 文件中并将其编译 成单独的包含assembly code的文件,然后让Clang获取我的汇编代码并组装到一个包含object code的单独文件中,最后让Clang获取我的目标代码和链接 将其放入包含 machine code? 的单独文件中?

最终的意思是我将有 4 个文件,一个是 C++ 代码,一个是汇编代码,一个是目标代码,最后一个是机器代码。所有这一切的重点是能够在运行包含机器代码的文件之前阅读和理解流程的每个阶段。

作为第一次离开 IDE 世界的人,我发现 Clang 官方文档非常混乱,无法找到我的问题的直接答案。

【问题讨论】:

  • 通常您只需分两步编译和链接。通常不需要保留中间文件。
  • 不要手动执行所有操作。至少让 CMake 帮助你。

标签: c++ assembly clang machine-code object-code


【解决方案1】:

与 GCC 相同,我会先对源文件进行预处理,从而更好地为您服务。原则上,Clang 也可以发出 LLVM 位码或 LLVM IR 作为两个额外的中间阶段。

clang++ source.cpp -E
clang++ source.ii -S
clang++ source.s -c
clang++ source.o

最后一个将 a.out 作为可执行文件提供。您可以通过附加来定义每个命令的输出文件

-o output.file

这些扩展可能不是 100% 正确的。只需检查结果。

【讨论】:

  • 感谢您的编辑,我手头没有电脑来查看自己的结果。
猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多