【问题标题】:What is linker, compiler, assembler and elaborator in an IDE like CodeBlocks?像 CodeBlocks 这样的 IDE 中的链接器、编译器、汇编器和精化器是什么?
【发布时间】:2019-10-28 03:07:48
【问题描述】:

IDE 由链接器、编译器、汇编器和精化器组成。我想了解他们如下:

  • 它们是什么关系?
  • 它们是如何连接的?
  • 他们的角色是什么?
  • 他们的偏好。

如果可能,什么是链接器脚本?

有人,请帮我画图。 提前致谢。

【问题讨论】:

  • 我从来没有听说过“elaborator”这个词用来描述开发环境的一部分。也许你的意思是“编辑”?
  • 您的问题非常广泛和笼统(您应该在维基百科上查找"linker""compiler" 等词),但有关链接器脚本的部分除外。这是一个非常具体的东西,除非您需要覆盖如何在可执行文件中布置节/段的链接器默认设置,否则您通常不会使用它。例如用于构建可引导内核。
  • @KittoMi 不需要图形来回答您的问题。你能接受口头回答吗?
  • @JavierSilvaOrtíz 非常欢迎您口头回答。

标签: gcc assembly linker compiler-construction ide


【解决方案1】:

编译器汇编器将源代码作为输入,并以机器语言(CPU指令的二进制形式)生成目标代码文件。主要区别在于编译器获取以 C/C++ 等高级语言编写的源代码,同时,汇编器获取以目标体系结构的特定汇编语言(运行代码的 CPU)编写的源代码。但有些编译器可以输出汇编文本,然后将其作为输入提供给汇编器。

链接器 将这些目标代码文件放在一起并生成最终的可执行文件(或库)。虽然一些编译器/汇编器没有外部链接器,因为链接是由它们内部执行的。

链接器脚本在广义上是一种配置文件,它告诉链接器如何组合目标文件的详细信息。

elaboratoreditor 是您键入源代码的地方,它通常集成到 CodeBlocks 和 Visual Studio 等 IDE 中。

他们的关系如下: Editor->Compiler or Assembler->Linker (Configured by linker script)->Final executable or library.

他们没有任何偏好。他们做他们该做的事,他们没有选择权,我们告诉他们该做什么。

请参阅此post,并在 Google 上搜索“链接器脚本”以获取有关它们和示例的更多信息。

【讨论】:

  • 取决于编译器(例如 GCC),它可能只输出汇编文本并通过汇编器运行。除非您要求其他编译器输出 asm,否则其他编译器会直接生成机器代码。
猜你喜欢
  • 2016-02-16
  • 2011-04-29
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
相关资源
最近更新 更多