什么是'linkonce'部分,对于额外的赞誉,它与comdat部分有什么不同?
要清楚,我熟悉comdat部分的工作原理,它们是如何使用的等等。在谷歌搜索中, linkonce 几乎完全在论坛中讨论,其中假设意义/意图/该部分的目的已经相当清楚。
答案 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 的任何COMDAT部分如果未引用该部分。
我不确定这种类型的折叠是否适用于g ++ linkonce 部分,但似乎合乎逻辑。