几年来,我们一直在为嵌入式 powerpc 系统编译内核模块,通常情况下,一些罕见的无法解释的稳定性问题都可以。最近有同事指出,内核模块应该使用与内核相同的编译器进行编译。经过一番挖掘后,我发现内核(montavista linux 2.4.20)是用 gcc3.4.1 编译的,我们一直在使用(denx eldk)gcc4.0.0。我最近为我们的用户空间代码构建了 gcc4.7.1,但加载使用此版本构建的内核模块会导致系统崩溃。然后我从源代码构建 gcc3.4.1,有些构建工作,有些不工作 - 认为我可能对 make 脚本有问题,但那是另一个故事。
所以我的问题是:我的同事是否正确?如果是这样,任何人都可以解释导致不兼容的结果 .o 文件有什么不同吗?