【发布时间】:2016-08-11 17:06:22
【问题描述】:
假设我有两个编译器,甚至是一个带有两个不同选项集的编译器。每个编译器都将一些 C 代码编译成一个对象,我尝试用一个通用链接器链接这两个 .o 文件。这会成功吗?
我最初的想法是:并非总是如此。如果编译器使用相同的目标文件格式并且具有兼容的选项,那么它将成功。但是,如果编译器有冲突的选项,或者(这是一个简单的选项)使用两种不同的目标文件格式,它将无法正常工作。
有没有人对此有更深入的了解?目标文件需要遵守哪些标准才能获得对其有效的信心?
【问题讨论】:
-
大多数非 Windows 平台都将这些东西标准化。
-
我想你自己说的。我相信如果目标文件具有相同的ABI,那么它们会很好地结合在一起,但我对你所说的内容没有任何直接经验,所以可能会有一些其他的怪癖。
标签: c compiler-construction linker