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

主内核 Makefile 讲述了两种将输出放置在别处的方法(不像你问的那样,但它可能很有用)。查找 KBUILD_OUTPUT(可以设置为环境变量或设置为 O=where/to/put to make)。

于 2013-01-20T03:08:03.720 回答
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 回答