1

複数のディレクトリにあるファイルからカーネル モジュールを構築しようとしています。結果の .o ファイルを、各ソース ディレクトリに対応して作成された新しいディレクトリに配置したいと考えています。

たとえば、ソースが A/a1.c 、 A/a2.c 、 B/bc の場合。.o ファイルが A/new-dir/a1.o A/new-dir/a2.o B/new-dir/bo などに移動するようにします。

私の現在のMakefileは次のようなものです:

obj-m += foo.o

lavya-objs := lavya_module1.o  lavya_module2.o

lavya-objs += $(A_DIR)/a1.o $(A_DIR)/a2.o $(B_DIR)/b.o 


all: 

        make -C $KERNEL_PATH  M=$(PWD) modules

また、対応する .c ファイルと同じディレクトリに .o ファイルを作成します。Makefile を変更して、各ソース ディレクトリに新しいディレクトリを挿入し、代わりに .o ファイルをそこに移動することはできますか? どうすればそれができますか?

どうもありがとう!

4

2 に答える 2

0

Yes you can do it in makefile like below

obj-m += foo.o

lavya-objs := lavya_module1.o  lavya_module2.o

lavya-objs += $(A_DIR)/a1.o $(A_DIR)/a2.o $(B_DIR)/b.o 


all: 
    make -C $KERNEL_PATH  M=$(PWD) modules
    mkdir -p $(A_DIR)/objs && mv $(A_DIR)/*.o $(A_DIR)/objs/
    mkdir -p $(B_DIR)/objs && mv $(B_DIR)/*.o $(B_DIR)/objs/
于 2015-06-22T10:10:56.750 に答える
0

メイン カーネルの Makefile には、出力を別の場所に配置する 2 つの方法が記載されています (ご質問のとおりではありませんが、役立つ可能性があります)。KBUILD_OUTPUT を探します (環境変数として、または O=where/to/put to make として設定できます)。

于 2013-01-20T03:08:03.720 に答える