Linux カーネルのモジュールが非常に「脆弱」であり、再コンパイルが頻繁に必要になることに少し驚いています。2 つの異なるマシン (gcc の異なるバージョンなど) で同じソース ツリーを使用すると、カーネル (マシン B) で動作しないモジュール (マシン A) が生成されます。
no symbol version for module_layout
悪名高いエラーメッセージが必要ない場合は、ダミーのシステムコールを追加すると、再コンパイルが必要になるようです。
さらに驚いたのは、kernel/ に単なる .c ファイルを追加したことです。このファイルは、ABI に触れません (つまり、内部構造が何であれ、エクスポートも使用も更新もされないスタンドアロン関数)。
その新しい .c ファイルにダミーのテキスト文字列を追加すると、すべてのモジュールは変更されません。
では、ここでのルールと理論的根拠は正確には何ですか? (問題がある場合は、x86、32 ビット アーキテクチャに焦点を当てています)