- IPA阶段之后的编译
通过make对ipa_link产生在子文件夹中的文件进行以下动作:symtab.i编译为symtab.o,symtab.G分割出来。剩余的.i文件编译成.o文件,通过查询symtab.G引用全局符号表(能使用并行make),使用在linkopt中的参数调用最终的ld
整个Open64课程系列的文章包括以下,请阅读中指正
通过make对ipa_link产生在子文件夹中的文件进行以下动作:symtab.i编译为symtab.o,symtab.G分割出来。剩余的.i文件编译成.o文件,通过查询symtab.G引用全局符号表(能使用并行make),使用在linkopt中的参数调用最终的ld
整个Open64课程系列的文章包括以下,请阅读中指正
这个博客的技术性好强。
呵呵 主要是为了让自己能学到点东西:)
偶尔也会有一些生活的文章。欢迎来看看 呵呵
ipa_link和ld(无-ipa选项时)在link阶段看到的对象相同。但是ipa_link和ld识别符号解析的规则不同.
不理解第一句。
另外原文是Identical symbol resolution rules between ipa_link and ld。为啥翻译成规则不同?
抱歉,这里是我在没有理解IPA的基础上翻译出的错。正确的译法是:ipa_link和ld(无-ipa选项时)在link阶段看到的对象相同。他们的ipa_link和ld符号解析规则也一样。
这主要是因为,ipa_link有类似于LD的行为—在全局范围内处理符号表和PU,open64中的ipa_link就是从ld的源码中修改而来,所以他们看到的对象和符号解析规则相同。ipa_link和ld的不同点是,ipa_link用这些全局信息作进一步的分析和优化,而ld则是利用这些信息来重新解析不好表,将多个.o文件生成最后的可执行文件。
因为自己的英语还不行,翻译过程中肯定有问题,尽管指出,呵呵。我一定修改:)
Thanks
@hg,
Ipalink用ld的代码,是因为symbol lookup的逻辑和行为要保持一致。llvm则是在link时直接作ipa
–by zsc
Pingback: Open64课程–反馈指导优化(FDO) « 编译点滴
Pingback: Open64课程-编译过程 « 编译点滴
Pingback: 编译点滴 » Open64课程-内联
Pingback: 编译点滴 » Open64课程–OpenMp和自动并行化
Pingback: 《编译点滴》半年记 « 编译点滴