我正在尝试从多个目录中的文件构建内核模块。我想将生成的.o文件放在与每个源目录对应的新目录中。
例如,如果我的来源是A / a1.c,A / a2.c,B / b.c;我希望.o文件转到A / new-dir / a1.o A / new-dir / a2.o B / new-dir / b.o等等。
我当前的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文件?怎么办呢?
非常感谢!
答案 0 :(得分:0)
主内核Makefile讲述了将输出放在别处的两种方法(不像你问的那样,但它可能很有用)。查找KBUILD_OUTPUT(可以设置为环境变量或O = where / to / put to make。)
答案 1 :(得分:0)
是的,您可以在下面的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
mkdir -p $(A_DIR)/objs && mv $(A_DIR)/*.o $(A_DIR)/objs/
mkdir -p $(B_DIR)/objs && mv $(B_DIR)/*.o $(B_DIR)/objs/