首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++工具链和编译器有什么区别?

C++工具链和编译器有什么区别?
EN

Stack Overflow用户
提问于 2020-03-05 13:38:53
回答 3查看 3.3K关注 0票数 4

我知道有很多编译器,比如gccclangninja,但是我经常听说"Toolchains“等等,但是我不明白它们是什么,比如”gnu-toolchain“等等。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-05 14:59:52

有几个重要术语:

  1. 编译器:将代码转换为编译后的二进制格式的工具。这通常包括一个汇编程序步骤,严格来说并不是编译器。此外,您调用的工具通常是编译器/汇编程序/链接器后端的“驱动程序”,并且在构建过程中的每一步都调用它们(包括链接)。例如gcc/g++clang/clang++clicc/icpccl将编译器生成的二进制代码组装成特定的对象文件格式( Visual的.obj文件、几乎所有其他东西的.o文件)。在从源代码生成对象文件时,这通常是内置的,或者至少由编译器调用。例如,as,.
  2. Linker:将对象文件链接到可执行文件格式中。这可以是共享库(..dll/..dylib/..so),也可以是可执行应用程序(.exe)。例如ldlinklld,.

(3a)“图书馆员”:Unix工具ar或Visual工具lib.exe。这只是将对象文件打包成一个薄包装格式的(.a/.lib).

  • Debugger:工具,用于在运行时检查源代码中定义的变量的值。例如,...

  • Toolchain:、lldbwindbgwindbg--所有这些组合在一起。调试器可能被认为也可能不是这个though.

  • Build工具的一部分:调用工具链工具将源文件集合转换为一个或多个库和可执行文件的工具。例如,makeninjamsbuildxcode-build、.

  • 项目生成器:对项目进行“抽象”描述,以及源文件如何与输出文件相关联,并生成构建工具和/或IDE可以使用的东西,就好像项目是在该IDE中构建的一样。这使得跨平台开发如果做得正确的话,就不会那么痛苦了。例如cmakeqmakepremake、.

  • IDE:通过不同级别的语言注释、代码导航和工具链集成增强了文本编辑器。通常,您可以从一个IDE加载项目文件、搜索符号、生成、调试等等。例子有Visual,Qt,KDevelop,Xcode,Eclipse,Code::Block,.和适当的插件数组: Vim,Emacs,VSCode,Atom,崇高文本,.
票数 6
EN

Stack Overflow用户

发布于 2020-03-05 13:42:01

工具链是用于构建项目的一组工具(例如编译器、链接器和汇编程序)。其他工具(如调试器)可以与工具链相关联。根据系统上安装的编译器,可以有几个可用的工具链。

票数 4
EN

Stack Overflow用户

发布于 2020-03-05 14:17:30

我知道有很多编译器,比如gcc,clang,I

忍者不是一个编译器。它是一个构建自动化工具,或者说是一个“构建系统”。构建自动化工具读取配置,并生成必要的命令来调用构建程序所需的工具链工具。

比如

,CMake是什么?

CMake是一种配置语言和程序,它为构建自动化工具(如忍者)生成配置。

使用这种生成器的原因是您可以选择使用任何构建系统(由生成器支持),这很重要,因为并非所有系统都支持所有构建系统。构建系统生成器的另一个原因是检测系统和使用的工具链的功能,并使用这些信息更改配置。

C++工具链和编译器有什么区别?

工具链是将源文件转换为可执行文件(或库)并执行它所需的一组工具。

编译器是工具链包含的工具之一。编译器的工作是将源文件作为参数,并为目标系统生成程序集代码--尽管这个视图有点过时:通过链接时间优化,编译器将生成“中间表示”语言。

喜欢“gnu-工具链”

GNU工具链是一组使用GNU编译器的工具,即GCC。

,那么工具链包含什么?

它可以取决于上下文,但以下是典型的情况:

翻译阶段:

  • compiler
  • assembler
  • linker

执行阶段:

动态loader

  • debugger

  • profiler

其他工具也可被视为工具链的一部分,例如:

tools

  • standard library

  • macro processors

  • archivers

  • package
  • 构建自动化管理器

以及程序员可以使用的许多其他小型工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60546658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档