5

私は Linux カーネル モジュールのプログラミングは初めてで、このトピックに関する多くの入門ガイドには、Linux の多くのバージョンと CPU プラットフォームで実行されるカーネル モジュールの構築方法に関する情報がほとんど含まれていません。私が見たほとんどのガイドでは、「Linux はバージョン間の ABI/API の互換性を保証していません」などと単純に述べています。ただし、他の OS はメジャー バージョンに対してこれらの保証を提供しており、ガイドは主に 2.7 (現在は少し古い) を対象としています。

現在、何らかの種類の ABI/API 互換性があるかどうか、またはコードのカーネル依存ビットを大量のプリプロセッサ ディレクティブを含むファイルに分離する以外に、バージョン管理を処理する標準的な方法があるかどうか疑問に思っていました。(また、2 番目のケースで使用すべき標準のプリプロセッサ シンボルはありますか?)

4

2 に答える 2

9

カーネル用の安定した ABI はありません。Linuxがうまくいかないため、安定した ABI はおそらくありません。持っていない理由はすべて、そのリンクにほとんど文書化されています。

これに対処する最善の方法は、ドライバーをアップストリームにマージして、他のカーネル開発者が保守することです。

クロスプラットフォームであることに関しては、API で提供される標準のプラットフォームに依存しない関数のみを使用する限り、Linux カーネルではほとんど無料です。

于 2013-06-17T04:37:14.470 に答える