它是编译器/ IDE的一部分.或者确切地说,编译器和链接器是单独的程序(在构建可执行文件的不同阶段调用),但通常整个群集(包括其他几个可执行文件)被称为编译器,例如gcc.
链接器不是操作系统的一部分,尽管某些操作系统(如Linux)可能与一个(甚至多个)链接器捆绑在一起,作为某些编译器工具链的一部分.无论如何,您可以在同一操作系统上安装和使用多个不同的编译器(每个编译器都包含自己的链接器).例如,在Windows操作系统上,您可以同时安装gcc和msvc,但gcc不能与Visual Studio IDE一起使用,因为它仅与msvc捆绑在一起.但AFAIK Eclipse可以使用其中之一.
更新:您似乎对编译器工具链中的链接器与OS 的动态链接器之间的名称相似性感到困惑.
编译器工具链的链接器在构建过程中完成其工作,当需要将不同的编译单元拼接在一起以形成连贯的可执行程序时.通常,代码包含对外部库的调用; 这些库可以是静态的或动态的.静态库基本上是可执行方法的存储,链接器可以将其物理复制到可执行文件中.动态库包含不需要复制的方法; 相反,链接器将对库方法的一种引用存储到可执行文件中.运行可执行文件时,在OS的帮助下加载动态库,然后调用库方法.这是由OS的一部分完成的,而不幸的是,它被称为动态链接器 - 但这与编译器工具链中的链接器完全不同,而应该称为加载器.
动态库可以在内存中共享,即多个可执行文件可以并行使用相同的库代码(因此它们也称为共享库).而从静态库复制的代码在所有可执行文件中都是重复的.