カーネルモジュール:.oと.ko


10

カーネルモジュールを含むファイルが呼び出さ.oれているようです。少なくとも、このようなチュートリアルを見るとわかります。しかし、私のdebian squeezeボックスでは、これらのファイルはと呼ばれているようです.ko

それはファイルが呼び出されているかどうかを配布(またはverisonその)に依存しない.oか、.koそうでなければ、彼らは多かれ少なかれ同じですか?

回答:


11

私はここに次の答えを見つけました:

簡単に言えば、.koファイルは、カーネルが必要とする自動生成されたデータ構造にリンクされたオブジェクトファイルです。

.oファイルは、モジュールのオブジェクトファイルです。Cファイルをコンパイルした結果です。カーネルビルドシステムは、カーネルモジュールを記述するいくつかのデータ構造(your_module_kmod.c)を含む別のCファイルを自動的に作成し、このCファイルを別のオブジェクトファイルにコンパイルし、オブジェクトファイルとそれが一緒にビルドしたオブジェクトファイルをリンクして.koを作成しますファイル。

カーネルモジュールのロードを担当するカーネルの動的リンカーは、カーネルが.koファイルのkmodオブジェクトに配置したデータ構造を見つけることを期待しており、それらがないとカーネルモジュールをロードできません。

また、そのソースからtldpを引用して:2.4カーネルバージョンまでは「.o」、2.6以降は「.ko」です。


3

古いハウツー(チュートリアル)のようですが、実際には2005年に作成されました。Linuxカーネルが2.4.xの場合、モジュールの拡張子は.oでしたが、2.6では.koになりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.