組み込みの powerpc システム用のカーネル モジュールを数年間コンパイルしてきましたが、説明のつかない安定性の問題がまれにありますが、一般的には問題ありません。最近、ある同僚が、カーネル モジュールはカーネルと同じコンパイラでコンパイルする必要があると指摘しました。少し調べてみると、カーネル (montavista Linux 2.4.20) が gcc3.4.1 でコンパイルされており、(denx eldk) gcc4.0.0 を使用していることがわかりました。最近、ユーザー空間コード用に gcc4.7.1 をビルドしましたが、このバージョンでビルドされたカーネル モジュールをロードすると、システムがクラッシュします。次に、ソースから gcc3.4.1 をビルドします。一部のビルドは機能し、一部のビルドは機能しません。make スクリプトに問題がある可能性があると思いますが、それは別の話です。
だから私の質問:私の同僚は正しいですか?もしそうなら、非互換性の原因となる.oファイルの違いを誰かが説明できますか?