gpt4 book ai didi

gcc - llvm 有 binutils 吗?

转载 作者:行者123 更新时间:2023-12-03 09:24:50 26 4
gpt4 key购买 nike

LLVM 编译器工具链有一个与普通 gcc 兼容的 gcc。使用 llvm-gcc 的优点是可以访问任意目标,这意味着当您尝试编译为随机架构时,正常的 gcc 会说没有这样的目标,比如 mips-apple-darwin。然而,llvm-gcc 实际上会在 mips 处理器上为 Mac OS X 构建一个编译器。

然而,这里有一个问题:要构建到随机目标,您需要已经为该目标构建的 binutils。因此,如果您有一个 llvm 可以编译到但 binutils 不能编译的目标,那么您就不能制作编译器,因为 GNU Binutils 不支持该目标。

所以......问题是:是否有类似 llvm-gcc 的等效 llvm-binutils 与 GNU Binutils 兼容? (意味着构建到任意目标的目标,而不是列表中的目标。)

编辑:

通过任意,我的意思是我在运行 llvm-gcc 时不选择目标,而是在编译 llvm-gcc 时选择目标。含义:如果我尝试为 mips-apple-darwin 编译 GCC,则会得到不支持的目标。但是如果我为 mips-apple-darwin 构建 llvm-gcc,只要我有 mips-apple-darwin-as 和 mips-apple-darwin-ld,它就可以工作。

最佳答案

据我所知,LLVM 不会针对任意目标进行编译。您必须拥有适合您的目标的所有包含和定义,通常,llvm 有一个后端来为您的目标生成代码。阅读“我可以将 C 或 C++ 代码编译为与平台无关的 LLVM 位码吗?”来自 http://llvm.org/docs/FAQ.html .

为了回答这个问题,llvm 没有使用 GNU binutils,llvm 有自己的 'binutils' 来生成代码(称为 LLVM 核心项目)。反汇编器和调试器是 LLDB 项目的一部分。

LLVM 带来一些独立性的地方在于语言层面。您的项目可以用 C/C++、Ada、Fortran 等编写……llvm 能够以中间表示形式转换您的代码。该 IR 最终会生成代码。

关于gcc - llvm 有 binutils 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com