1

モジュール ビルドの出力をリダイレクトして、アーティファクトをソースから分離したいと考えています。

私のメイクファイルは次のようになります。

    obj-m += hello-1.o

all:
    make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) modules

clean:
    make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) clean

モジュールの出力がたまたまソース ディレクトリにあることを除いて、これは正しく機能します。各行に O={path to my output dirctory} を追加しようとしましたが、次のようなものでビルドに失敗しました...

エラー: カーネル構成が無効です。include/generated/autoconf.h または include/config/auto.conf がありません。修正するには、カーネル src で「make oldconfig && make prepare」を実行します。

警告: シンボル バージョン ダンプ /work/development/linux/driver/blah/Module.symvers がありません。モジュールには依存関係や modversion はありません。

これは、モジュール ビルドで使用されるカーネル ビルドからの出力ファイルが存在し、出力ディレクトリを "O=" で変更すると、それと衝突するという事実に起因すると思われます。

既存のビルド インフラストラクチャを使用してこれを達成する方法はありますか?

4

2 に答える 2

0

モジュールシステムのドキュメントを見ると、見栄えがよくありません。.configおそらく、ビルドディレクトリにコピーして、 withsetmake oldconfig && make modules-prepareを実行できますO=


makeまたは、別のディレクトリから実行するとどうなりますか?

/somewhere/else$ make -C /path/to/kernel ARCH=arm CROSS_COMPILE=arm-eabi- M=/your/module/dir modules
于 2012-07-27T05:52:39.420 に答える
0

この Makefile はクエリを解決します

 obj-m += hello-1.o

all:
make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) modules_install INSTALL_MOD_PATH=<output directory for modules>

clean:
make ARCH=arm CROSS_COMPILE=arm-eabi- -C /work/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel M=$(PWD) clean
于 2013-01-22T17:47:32.840 に答える