我正在使用工具“EA”(电动加速器)来加速编译我的项目。我发现使用EA而不使用EA的C源文件的编译结果是不同的(在同一台机器上,分布式编译是禁用的)。传递给GCC的编译选项是相同的。并且,这仅在使用“-O2”时发生。如果我使用“-O1”编译文件,obj文件是相同的。通过分析汇编代码,我发现使用EA生成的代码也是正确的。显然,EA会影响gcc的编译结果。怎么解释这个?
答案 0 :(得分:0)
编译输出时你的意思不准确?如果您的意思是生成汇编代码。在优化级别(即-O1 -O2
)方面,编译器与编译器不同。这就是为什么你得到不同的代码。我认为这取决于编译器如何进行优化。 this可能会对您有所帮助。
答案 1 :(得分:0)
我知道这是一个旧线程,但是EA有一个因素可以产生不同的目标文件......
如果您想要.o(或任何其他派生的),用于构建的代理计算机上的工具和库必须完全与构建计算机上的相同对象)看起来一样。请记住,eMake将makefile中目标的配方中的命令提供给远程代理,如果编译器,库等的版本与构建机器上的版本不同,则加速构建的结果会有所不同从没有加速的构建运行。