我想知道我们使用的ide是否包含链接器

时间:2010-09-06 20:59:07

标签: c++ c windows operating-system unix

链接器是操作系统还是编译器/ IDE的一部分?

3 个答案:

答案 0 :(得分:7)

它是编译器/ IDE的一部分。或者确切地说,编译器和链接器是单独的程序(在构建可执行文件的不同阶段调用),但通常整个群集(包括其他几个可执行文件)被称为编译器,例如GCC。

链接器不是操作系统的一部分,尽管某些操作系统(如Linux)可能与一个(甚至多个)链接器捆绑在一起,作为某些编译器工具链的一部分。无论如何,您可以在同一操作系统上安装和使用多个不同的编译器(每个编译器都包含自己的链接器)。例如。在Windows操作系统上,您可以安装gccmsvc,但gcc不能与Visual Studio IDE一起使用,因为它只与msvc捆绑在一起。但AFAIK Eclipse可以使用。

更新:您似乎对操作系统的linker in the compiler toolchaindynamic linker之间的名称相似性感到困惑。

编译器工具链的链接器在构建过程中完成其工作,当需要将不同的编译单元拼接在一起以形成连贯的可执行程序时。通常,代码包含对外部库的调用;这些库可以是静态动态。静态库基本上是可执行方法的存储,链接器可以将其物理复制到可执行文件中。动态库包含不需要复制的方法;相反,链接器将对库方法的一种引用存储到可执行文件中。运行可执行文件时,在OS的帮助下动态库已加载,然后调用库方法。这是由操作系统的一部分完成的,相当不幸的是,它被称为动态链接器 - 但是这与编译器工具链中的链接器完全不同,而应该被称为 loader < / em>的

动态库可以在内存中共享,即多个可执行文件可以并行使用相同的库代码(因此它们也称为共享库)。而从静态库复制的代码在所有可执行文件中都是重复的。

答案 1 :(得分:1)

链接器是编译器工具链的一部分(预处理器 - &gt;编译器 - &gt;汇编器 - >链接器)。

答案 2 :(得分:0)

它通常是编译器的一部分。从技术上讲,编译器和链接器是不同的工具,但它们通常结合在一起。