LINUX驅動開發環境搭建

來源:互聯網
上載者:User

我靠,這個可真TM的折騰人啊(先咆哮兩句)。沒人告訴我驅動開發還得要搭建環境,拿著《linux裝置驅動》這本書,一開始我就蒙了,真的!不知道還得構建一個核心樹,心裡想linux作業系統不是已經裝了嗎?我現在也沒明白為什麼還要自己去構建一核心樹。兩天半啊,啥事也沒幹就搭建它了。哎。

 1.    我的機器上裝的是LINUX 6.0(伺服器),核心版本2.6.32.7.所以我下載的標準LINUX核心源碼也是這個版本,在這裡下載相應的核心源碼然後頁面搜尋你需要的版本例如你linux-2.6.32.7則搜linux-2.6.32.7.tar.bz2這是源碼包。版本不一致的話,真的會有問題的(哥鬱悶過了)。

   然後解壓到/usr/src目錄下:tar -zxvf xx.tar.gz 或者tar -jxvf xx.tar.bz2(xx就是如:linux-2.6.32.7啦)。

2.編譯核心碼:

step1:make oldconfig  (or make menuconfig)

step2:make

這一step花時間很長,我大概是40分鐘,還有就是注意系統時間設定下,我就是因為一開始沒有設定系統時間所以make就一直報:時鐘錯誤....。哎我的嗎呀,這個東西搞死我了。

step3:make bzImage

step4: make modules

step5:make modules_install

step6:make install

 

3.修改boot鏡像檔案

進入/boot下,你會發現多了一個Vmlinuz-2.6.32.7檔案,和initramfs-2.6.32.7.img檔案,這個可都是剛剛編譯核心出來的啊。

然後我們再進入/boot/grub,開啟menu.list文檔,你會發現裡面會有root=,把原來系統內建的刪掉,保留我們編譯的核心。不然的話(uname -r)預設的是原來系統內建的版本。(我靠我已不知道為什麼原來的版本後面還多一段字串就是2.6.32-71.el6.i686).

 

4.現在可以開始我們的hello,world了。

例子是書上的:

// hello.c
#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
    printk(KERN_ALERT "hello world!\n");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT "goodbye!\n");
}

module_init(hello_init);
module_exit(hello_exit);

然後寫個Makefile文檔:

obj -m:=hello.o

 儲存到同一個目錄例如:/usr/drivermodules

cd到這個目錄然後:

make -c /lib/modules/(uname -r)/build SUBDIRS=$PWD modules    (ubame -r 其實就是你的核心版本號碼的目錄)

看看是不是多了幾個檔案?yes!下一步:

ok!你載入一下insmod hello.ko

再執行dmesg,看到hello,world了吧

rmmod hello.ko,看到goodbye,cruel world

 當然前面的那個命令有點長,我們可以直接卸載Makefile文檔裡面:

#mark start

obj-m:=hello.c

KERNELDIR=/lib/modules/$(shell uname -r)/build

PWD:=$(shell pwd)

default:

            $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:

           $(RM) *.o *.ko *.mod.c Module.symvers

#make end

完了!

閱讀全文

類別:Linux 查看評論

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.