首頁
中文書目錄
原文書目錄
 站內快速搜尋
資源中心
Book Series
Special Interest













■好消息,歐萊禮書籍已重新鋪貨至各大書局及網路書店,歡迎讀者選購       ■歡迎各院校採用歐萊禮書籍,學校團購請洽校園服務團隊

[FAQ]

Linux 驅動程式--hello.c 不能執行

----- Original Message -----
From: "White Pai" <white@carry.com.tw>
To: <lin@oreilly.com>
Sent: Friday, June 13, 2003 3:01 PM
Subject: hello.c 不能執行

你好:

我購買貴公司出的Linux驅動程式一書。
但於第二章P18頁中在執行insmod hello.o時會導致以下問題:
kernel-module version mismatch
hello.o was compiled for kernel version 2.4.20
while this kernel is version 2.4.20-8bigmem.

因為是Linux的新手不知如何解決此問題,是否可協助解決此問題.

Pai


您好,

您大概使用的是 RedHat Linux,所以有這種現象。 有幾種解決辦法,最簡單也最應該的辦法,是不要使用 bigmen 核心, 除非你的 RAM 真的超過 4 GB,否則,bigmem 核心只是徒然浪費一些 paging table 與一大堆無謂的記憶位址轉換而已。

這問題的來源是 gcc 預設的 include 目錄是 /usr/include, 但是 RedHat 放在該目錄下的 .h 檔是 2.4.20 版,與你當時的核心版本 ( 2.4.20-8bigmen) 不符。

解決辦法是 :
gcc -c -I /usr/src/linux-2.4.20-8bigmem/include/ hello.c ( 假設你的 2.4.20-8bigmen 的原始檔是放在 /usr/src/linux-2.4.20-8bigmen 目錄下 )。

最後,我個人給你一個建議,如果你真的是 "Linux 的初學者", 我真的不建議你現在看這本書,因為你的挫折感會比你的成就感多。

林長毅 Technical Editor


| 首頁 | 聯絡我們 |
© 2009, O'Reilly Media, Inc. Taiwan Branch