欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Debian/Ubuntu Linux下內核編程者必備_HackingYou_SupeSi...

Debian/Ubuntu Linux下內核編程者必備

2006-10-29 12:09:01 / 個(gè)人分類(lèi):Linux

如果你想要升級你的Debian/Ubuntu Linux內核,或者你希望為內核開(kāi)發(fā)新的模塊,或者您要為某個(gè)硬件寫(xiě)新的驅動(dòng)程序……這一切都涉及到Debian/Ubuntu Linux內核編程。

作為一個(gè)內核編程者,有那么幾個(gè)軟件是你必須要有的,看作是你進(jìn)行內核編程的幾件法寶吧,下面我一一列舉出來(lái):

1、gcc

大名鼎鼎的gcc我想沒(méi)有人不知道的吧?它是任何編程者必然要先安裝的一個(gè)武器了。不過(guò)一般如果你是安裝的Debian系統,應該已經(jīng)默認安裝了的。要是Ubuntu你就安裝一下吧,安裝方法嘛,就是輸入:


apt-get install gcc


2、make

如果你實(shí)實(shí)在在地寫(xiě)過(guò)有用的程序,你一定輸入過(guò)make clean、make、make install等命令的,make是一個(gè)源代碼維護工具,它能自動(dòng)檢測出需要重新編譯的源文件并根據你設定的編譯規則去重新編譯程序。這里也不多說(shuō),如果不了解的朋友就google一下吧。不過(guò)一般如果你是安裝的Debian系統,應該已經(jīng)默認安裝了的。要是Ubuntu你就安裝一下吧,安裝方法一樣,輸入:


apt-get install make

3、kernel-source

從這個(gè)包的名稱(chēng)上已經(jīng)知道了,這是內核源碼包。你可以apt-cache search kernel-source搜索到內核源代碼包,并用uname -r命令查看到當前系統內核版本,然后用apt-get install kernel-source-xxxx來(lái)安裝和你內核版本一致的內核源代碼包。

但我并不建議你這樣做,因為大多數發(fā)行版的Linux的內核源代碼包并不是和你從kernel.org上下載來(lái)的完全一致,應該是經(jīng)過(guò)發(fā)行者們修改優(yōu)化過(guò)的包,雖然發(fā)行版的制作者們花了心血在上面,但對我們編程者來(lái)說(shuō)這并不是件好事,因為大多發(fā)行版的源代碼包缺少某些必要的頭文件和某些有用的腳本程序,這會(huì )導致我們在編寫(xiě)內核模塊時(shí)遇到麻煩,比如編譯時(shí)可能會(huì )報錯說(shuō)某個(gè)頭文件找不到,又可能報錯說(shuō)某個(gè)腳本程序不存在啦。

如果你直接去kernel.org上下載一個(gè)新的內核來(lái)編譯升級你的內核,并在此基礎上進(jìn)行內核編程可能會(huì )省事一些,至少我后面講到的這些包你都可以不用安裝了,把KERNEL_DIR變量設置為你內核源代碼包的位置就夠了。

在這里還是以Debian 3.1、內核2.6.8-2-386為基礎來(lái)教大家準備內核編程環(huán)境吧。那么你依次用這幾個(gè)命令來(lái)安裝kernel-source包吧。


apt-cache search kernel-source
uname -r


apt-get install kernel-source-xxxx

注:如果你不想重新編譯內核,內核源代碼包kernel-source是完全可以不下載來(lái)的。

4、kernel-headers

這是內核源代碼頭文件包,不管你是要進(jìn)行內核模塊開(kāi)發(fā)還是進(jìn)行驅動(dòng)程序開(kāi)發(fā),這個(gè)包都是必須要安裝的。因為作為一個(gè)內核模塊編寫(xiě)者,通常會(huì )調用內核里的一些東西,比如內核頭文件,內核數據結構申明等。它里面包含了一些關(guān)鍵的內核頭文件。否則在編譯內核時(shí)會(huì )報類(lèi)似下面的錯誤:


HOSTCC  scrīpts/basic/fixdep
scrīpts/basic/fixdep.c:105:23: error: sys/types.h: 沒(méi)有那個(gè)文件或目錄


輸入如下命令來(lái)安裝吧:


apt-cache search kernel-headers
uname -r
apt-get instakk kernel-headers-xxxx


注:在Ubuntu下,好象這個(gè)包的前面都加上了linux-,從而變成了linux-kernel-headers。

如果之前沒(méi)有安裝過(guò)kernel-kbuild包,安裝此包的過(guò)程中會(huì )安裝kernel-kbuild包,這個(gè)包在下面介紹。

5、kernel-kbuild

這個(gè)包是用來(lái)編譯內核模塊的,下載安裝這個(gè)包后會(huì )發(fā)現在/usr/src目錄下多了一個(gè)kernel-kbuild-xxxx開(kāi)頭的目錄,下面只有scrīpts一個(gè)目錄,顯然這是用來(lái)編譯內核模塊的一些腳本程序。安裝方法一樣:


apt-cache search kernel-kbuild
uname -r
apt-get install kernel-kbuild-xxxx


注:你也會(huì )發(fā)現,在上面安裝kernel-headers包后,/usr/src/kernel-headers-xxxx目錄下有個(gè)scrīpts目錄,其實(shí)是到/usr/src/kernel-kbuild-xxxx目錄下的scrīpts的一個(gè)鏈接。

6、build-essential

這個(gè)包包含一個(gè)在建立deb包過(guò)程中起關(guān)鍵作用的包的信息列表,如果你不想建立deb包你就不需要安裝此表,如果需要生成deb包就最好安裝一下這個(gè)包吧。安裝方法:


apt-get install build-essential


7、kernel-package

如果你想把內核鏡像做成一個(gè)deb包來(lái)用,那么必須用安裝這個(gè)包了。也就是說(shuō)只有安裝了這個(gè)軟件包你才能有make-kpkg命令可用。安裝方法一樣了:


apt-get install kernel-package


8、initrd-tools

如果你想制作啟動(dòng)過(guò)程的initrd鏡像,則這個(gè)包是必不可少的。安裝了這個(gè)包之后才有mkinitrd命令可用的。安裝方法:


apt-get instakk initrd-tools


最后來(lái)一個(gè)內核模塊編程示例吧!

假設你編寫(xiě)了一個(gè)內核模塊程序,源代碼如下:


/* hello.c */
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int hello_init(void)
{
    printk(KERN_ALERT "Hello, linux kernel module\n");
    return 0;
}
static void hello_exit(void)
{
    printk(KERN_ALERT "Goodbye, I‘ve created a linux kernel module sucessfully\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");


你需要這此源程序編寫(xiě)一個(gè)makefile,內容如下:


#Makefile for hello.c file
#
KERNEL_DIR:=/usr/src/linux
obj-m:=hello.o
default:
$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
$(RM) .*.cmd *.mod.c *.o *.ko -r .tmp


注意:這里的KERNEL_DIR是指內核源代碼頭文件所在目錄的上一級目錄,通常就是指內核源代碼目錄。該目錄一般包括有arch,drivers,fs,include,init,ipc,kernel,lib,mm,net,scrīpts,usr,sound,security等目錄。

在本示例中,/usr/src/linux是一個(gè)鏈接,指向了/usr/src/kernel-headers-2.6.8-3目錄。

編寫(xiě)好makefile后就可以輸入make命令生成hello.ko內核模塊了,然后你可以用:


insmode hello.ko


命令來(lái)加入內核模塊,然后用:


rmmod hello


來(lái)刪除內核模塊。

當然,操作過(guò)程中,你可以用dmesg命令來(lái)查看運行結果。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
debian的成功升級內核
debian7編譯linux內核以及內核安裝
Ubuntu下構建內核源碼樹(shù)
linux3.x 下 Unknown symbol in module的處理
Linux 2.6內核Makefile淺析
如何查看已安裝的Linux內核
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久