2010-12-12 205 views
1

於是我開始讀這本書http://lwn.net/Kernel/LDD3/編寫設備驅動程序設備驅動程序丟失的config.h

的問題是這本書我用2.6.35.X(在Ubuntu)和「配置,而用2.6.10 .h「缺失。我GOOGLE了這個問題,結果是config.h被刪除。

http://stephane.lesimple.fr/wiki/blog/kernel_2.6.18_linux_config.h_problem建議3個解決方案,前2個對我不起作用(我沒有autoconf.h)。第三種解決方案就是我的頭腦。如果任何人可以解釋第三或有其他解決方案,我會很感激。

感謝

回答

1

所有-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參考