【发布时间】:2011-10-12 00:02:53
【问题描述】:
我正在尝试能够在命令行中执行“make debug”,它将使用 -DDEBUG_OUTPUT 定义构建我的驱动程序模块,这将导致某些代码部分被编译。
在 2.4 内核 makefile 中,这很容易。我只是创建了一个 debug: 目标,并在该目标的 cc 编译命令参数中包含了“-DDEBUG_OUTPUT”。很简单。
不幸的是(对我来说),2.6 完全改变了模块的编译方式,我似乎只能找到琐碎的“全部”和“干净”示例,它们没有显示在编译时添加自定义定义。
我试过这个:
debug:
make -C $(KERNEL_DIR) SUBDIRS='pwd' -DDEBUG_OUTPUT modules
并收到了 make 的投诉。
我也试过了:
.PHONY:调试
debug:
make -C $(KERNEL_DIR) SUBDIRS='pwd' EXTRA_CFLAGS="$(EXTRA_CFLAGS) -DDEBUG_OUTPUT" modules
但它没有看到 EXTRA_CFLAGS 包含的内容。我可以从命令行输出中看到它确实正确地将 -D 附加到现有的 EXTRA_CFLAGS 上,其中包括 -I 用于包含目录。但是,驱动程序文件现在无法编译,因为它找不到包含目录...所以不知何故它看不到 EXTRA_CFLAGS 包含的内容。
【问题讨论】:
标签: linux linux-kernel linux-device-driver