【发布时间】:2013-01-16 16:23:53
【问题描述】:
我正在尝试从多个目录中的文件构建内核模块。我想将生成的 .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 文件移到那里?怎么办?
非常感谢!
【问题讨论】:
-
@Satish:谢谢,但这是针对用户空间 cpp 应用程序的。我的问题是关于制作内核模块。
-
有什么区别? makefile 指示 Make 编译
a1.c并将a1.o放在某处。它不知道a1.c是谁写的,也不知道代码要做什么。 -
内核构建过程不是完全不同吗?实际上,我刚刚为 c 应用程序做了一些类似的事情,但这不适用于模块。
标签: c linux module makefile kernel