2017-10-22 2 views
-1

私は、.cファイルをソース.cファイルを使って作成し、後で続くmakefileを使用できることを知っています。今、ソースを公開せずに同じ種類の.koファイルを作成したいと思います。だから私は.oオブジェクトファイルを使ってそれを行うつもりだった。しかし、私は正しい道のりではありません。どうすればこの要件に従ってMakefileを修正できますか?.oファイルを使用して.koファイルを作成する

obj-m += somesource.o 

all: 
    make -C $(KERNEL_SRC) M=$(PWD) modules 


clean: 
    make -C $(KERNEL_SRC) M=$(PWD) clean 

答えて

0
私の知る限りでは

、他のマシン上で作成オブジェクト・ファイルから1つのできないビルドカーネルモジュール。唯一の例外は出荷ファイルです。コードは含まれていても、記号(変数または関数)を提供することはできません。

これは、1つのカーネルで定義されている関数や型の互換性がない、異なるカーネルの中で定義された関数や型の使用に対する保護であると思います。

ソースを公開したくない場合は、カーネルモジュールをマシンにインストールして配布してください。

+0

応答がありがとう、私はこれがなければそれを行うことができます他の方法はありますか?たとえば、.cファイルは.oファイルに変換され、.mod.oファイルはカーネルソースの.mod.cファイルから生成されます。 2つのオブジェクトファイルは動的にリンクされています。 私が間違っていない場合は、この手順をハッキングして、これら2つの使用可能なオブジェクトファイルを処理できますか? –

+0

この手順をハックする可能性は非常に高いですが、どうすればよいか分かりません。カーネルビルドプロセスとそのMakefile構造は実際は複雑です。 – Tsyvarev

関連する問題