什么是'linkonce'部分

时间:2011-04-01 19:43:58

标签: c++ linker

什么是'linkonce'部分,对于额外的赞誉,它与comdat部分有什么不同?

要清楚,我熟悉comdat部分的工作原理,它们是如何使用的等等。在谷歌搜索中, linkonce 几乎完全在论坛中讨论,其中假设意义/意图/该部分的目的已经相当清楚。

1 个答案:

答案 0 :(得分:5)

http://gcc.gnu.org/ml/gcc/2003-09/msg00984.html似乎在讨论这件事......

修改

总结:

根据该线程,COMDAT在某种意义上更加模糊,因为没有单一的正确/标准定义构成 true COMDAT实现。 g ++的 linkonce 是/概念的实现。

在MSVC ++和Wind River的'diab'编译器使用的COMDAT实现中,它们的COMDAT实现允许它删除未使用的部分;例如,如果 main.cpp 链接 foo.cpp 二进制文件可以排除 foo.o 如果未引用该部分。

我不确定这种类型的折叠是否适用于g ++ linkonce 部分,但似乎合乎逻辑。