【发布时间】:2012-07-25 11:00:02
【问题描述】:
我想重定向我的模块构建的输出以将工件与源隔离。
我的 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
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 不见了;模块将没有依赖项和修改版本。
我认为这是因为模块构建中使用了内核构建的一些输出文件,并且使用“O=”更改输出目录会与之发生冲突。
有没有一种方法可以使用现有的构建基础设施来实现这一点?
【问题讨论】:
-
您的问题不清楚,但我猜
.../kernel是您的源目录,也是构建modules的makefile 所在的位置。没有看到那个makefile,我们不能给你一个具体的答案。让它把它的产品放到其他地方可能是微不足道的,或者是真正的痛苦。 -
@Beta 抱歉,不清楚。内核确实位于 /work/TI-Android.../kernel。我的模块源位于 /work/mymodule,这是我执行上面列出的 makefile 的地方。
标签: linux module makefile kernel