所有-imacros 文件和-include 文件選項畢竟-D和-U選項1處理。
每個(三者)選項都是一種將GCC指向帶有預處理器定義列表的文本文件的方式。 要使用選項3,-imacros a_file,仍然需要文件a_file(即:autoconf.h),該文件帶有宏或配置定義。在這個系統中它的/usr/src/linux/include/generated/autoconf.h
l /usr/src/linux
lrwxrwxrwx 1 root conman 23 Nov 29 19:37 /usr/src/linux -> linux-2.6.35-gentoo-r12
正如你所看到的,在2.6.35出現此文件。看來也許配置內核會生成這個文件;因爲這個文件的內容看起來適合當前的內核。這看起來像是一個文件,聲明哪些驅動程序被編譯(如果編譯爲模塊)。
所以:
- 首先檢查該文件
find /usr/src/linux/. -name autoconf.h
如果它不存在,然後配置內核(再檢查一遍)
- 變化CFLAGS在設備驅動程序的Makefile包括-imacros /usr/src/linux/include/generated/autoconf.h
CFLAGS+=-imacros /usr/src/linux/include/generated/autoconf.h
- 從驅動程序源註釋掉
#include <config.h>
。
1 「3.11選項控制預,」 GCC參考