【发布时间】:2016-12-07 16:31:00
【问题描述】:
我想知道 LLVM 是否凭借其较新的设计来取代开源世界中的 GCC?
LLVM 应该具有多种检查代码的技术,以便 IDE 更易于编程等。但是,GCC 在性能方面应该仍然不错。
【问题讨论】:
-
我投票决定将此问题作为题外话结束,因为它与特定的可解决编程问题无关。
我想知道 LLVM 是否凭借其较新的设计来取代开源世界中的 GCC?
LLVM 应该具有多种检查代码的技术,以便 IDE 更易于编程等。但是,GCC 在性能方面应该仍然不错。
【问题讨论】:
简短回答: 否。根据上下文,它们都被广泛使用。
长答案:
视情况而定,这与采用以及其他因素有关。
例如,Apple 几乎所有事情都使用 LLVM(和 Clang),包括构建内核(之前使用 GCC 构建)、引导加载程序和用户空间。除此之外,LLVM 还用于图形驱动程序中,用于将着色器编译为 SGX USSE 字节流,尽管这里主要是 eating your own dogfood 的情况。
除此之外,LLVM 还用于开源项目,例如 in Mesa 和用于 JIT 编译的 Dolphin Emulator。
除此之外,GCC 仍然占主导地位,例如,Linux 是使用 GCC 构建的,尽管有人尝试build Linux using Clang+LLVM,但它们更像是一种实验。除此之外,在嵌入式世界中,许多嵌入式应用程序(例如,UBoot 和 Little Kernel)依赖于 GCC 扩展提供的功能,并且完全不会使用 Clang+LLVM 在编译到对象或链接阶段失败的情况下构建.
然而,对于用户空间应用程序,这在很大程度上取决于个人(或您公司的偏好),因为它们都提供大致相同的功能集,包括 SIMD 支持和对 C++14 和 C11 的完全支持(尽管 GCC 有一些在 C++ 支持方面令人讨厌的未解决错误,例如,Bug 61636)。
代码检查技术主要由 Clang 提供,根据我的个人经验,提供了大量开销(例如在 Qt Creator 中,在 XCode 中较少)。
【讨论】: