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

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

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

開(kāi)通VIP
Linux內核構建系統之一

要想學(xué)習Linux內核,特別是要想通過(guò)去hacking內核代碼來(lái)找到您手頭問(wèn)題的答案,那你通常就需要先有一些基礎知識,包括操作系統的原理、實(shí)際hacking所需要的工具使用、Linux內核構建系統的基本構成與基本運作原理等等。而Linux內核構建系統就是前述第三類(lèi)知識中比較基礎的部分。在整個(gè)Linux的開(kāi)發(fā)生態(tài)中,處于不同位置的人要求掌握內核構建系統的程度也不同。作為驅動(dòng)程序開(kāi)發(fā)人員來(lái)講,只要求會(huì )寫(xiě)自己驅動(dòng)程序的Kbuild/Makefile文件即可,但是正所謂“技多不壓身”,更何況了解構建系統能讓你更熟悉整個(gè)內核的工作原理,這反過(guò)來(lái)會(huì )促進(jìn)你驅動(dòng)開(kāi)發(fā)能力的提升。

 我認為你應當自己動(dòng)手去hacking內核構建系統,但是,假如你想節省一點(diǎn)時(shí)間,那本文應該就是你需要的材料。由于本文主題比較大,所以我在這里做一連載,發(fā)表在我的blog上。當然,如果你更喜歡看pdf格式的文檔,那這里就可以下載到包含所有內容的pdf文檔。

這一系列的文章總共有十篇,這是它們的鏈接:            

 

 

概論  

在xNIX世界中,您若要想使用任何一款軟件,通常來(lái)說(shuō)都必須先從官方站點(diǎn)上獲取源代碼、繼而編譯安裝、最后才是動(dòng)手使用。概括起來(lái),整個(gè)其過(guò)程一般可分成以下幾個(gè)步驟:

a) 獲取該軟件的源代碼;

源代碼通常是以壓縮包的形式由官方所發(fā)布出來(lái)的,所以到手后您必須解壓。需要注意的是,如果官方代碼中藏有bugs,而正好有熱心人修正了這些bugs,并且發(fā)布出來(lái)一些補丁程序。那么您為了在后續使用時(shí)避免出現問(wèn)題,您通常也需要下載這些補丁包,并進(jìn)行patch操作。

b) 進(jìn)入到源代碼目錄中進(jìn)行配置;

對大型的軟件項目來(lái)說(shuō),配置必不可少。該步驟的目的之一是為了確定編譯階段需要使用到的各種工具和編譯過(guò)程所面對的系統架構。比如編譯器在哪里?連接器又使用哪一個(gè)?搞清楚在什么機器架構上進(jìn)行編譯,編譯出來(lái)的程序又運行在什么架構上?其目的之二,您通常需要在配置過(guò)程中指定哪些功能特征是您所需要的。要知道,一個(gè)較大型的軟件項目,其中的功能可為多種多樣,而您,通常只需要其中的一小部分,所以您需要在下面編譯之前指定出來(lái)。

c) 編譯該軟件;

使用配置過(guò)程中所確定出來(lái)的工具,對實(shí)現您所指定那部分功能的代碼模塊進(jìn)行編譯,并經(jīng)過(guò)連接,最后形成所需要的可執行程序或可執行映像。

d) 安裝部署所編譯出來(lái)的結果;

可執行程序的安裝,就是要把他們放在PATH環(huán)境變量所指定的目錄中去,通常是 /bin, /usr/bin, /sbin, /usr/sbin 之類(lèi)的目錄。那么可執行映像呢,這通常和嵌入式應用相關(guān),您需要將這些映像下載到非易失性存貯器中,比如 EEPROM 或者 FLASH 中去。

當然,上面這個(gè)過(guò)程只是一般的過(guò)程。但是,像Windows平臺那樣,現在有很多軟件也都發(fā)布了針對不同架構編譯好的可執行應用程序包,為用戶(hù)省卻了煩瑣的配置和編譯,這種情況我們不去考慮。Linux內核作為一個(gè)大型的軟件項目,其使用也遵循上面這樣一個(gè)一般的過(guò)程。

針對Linux內核而言,上面的步驟b被稱(chēng)為kconfig,而步驟c即為kbuild。

kconfig時(shí),我們要使用類(lèi)似 "make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig" 的命令來(lái)選擇我們所要的功能。這個(gè)命令結束時(shí),我們所選擇的結果會(huì )被記錄到一個(gè)叫 ".config" 的隱藏文件中。注意,其中ARCH=arm規定了我們要為arm架構編譯內核,而CROSS_COMPILE=arm-linux-規定了編譯內核時(shí)需要使用arm-linux-打頭的交叉工具鏈。

.config文件生成后,我們就可以使用 "make ARCH=arm CROSS_COMPILE=arm-linux-" 之類(lèi)的命令來(lái)做編譯,即kbuild了。需要注意的是,對Linux內核做編譯,其產(chǎn)生的可執行代碼分布在兩個(gè)部分中間:一個(gè)基本內核映像和數個(gè)可獨立加載的模塊。在使用Linux內核時(shí),前者作為L(cháng)inux操作系統的主體而常駐內存;而后者可按需要動(dòng)態(tài)的加載到內存中或自?xún)却嬷行遁d,用以動(dòng)態(tài)的修改內核所具有的功能。這種安排是作為整塊式操作系統結構的Linux內核向微內核操作系統結構學(xué)習的結果。既然編譯的出來(lái)的可執行代碼可以以?xún)煞N方式存在,那么我們就必須預先告訴kbuild系統,哪部分放在基本內核里,哪部分又以模塊的形式存在。所以顯然,我們在配置過(guò)程中產(chǎn)生".config"文件的時(shí)候,除了需要記錄我們所需要的功能外,還要記錄這些功能都需要放在哪里。

Linux內核編譯完成后,接下來(lái)要做的同樣也是安裝。對于x86等架構的桌面機來(lái)說(shuō),我們需要將基本內核映像放到文件系統中,通常是/boot目錄下;對于嵌入式系統,我們要燒寫(xiě)進(jìn)FLASH中。對于各種模塊,我們也要裝到文件系統的指定目錄下面。另外值得一提的是為了讓?xiě)贸绦蚰苷J褂肅庫,Linux內核還要向C庫提供一套頭文件,所以我們也需要將內核提供的頭文件安裝到文件系統相應的目錄下面。安裝可以手動(dòng)進(jìn)行,也可以自動(dòng)的用類(lèi)似 "make modinstd"、"make install"、"make headerinst"之類(lèi)的命令。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Arm Linux交叉編譯和連接過(guò)程分析(2) - Linux - Linux My world
Linux內核構建系統
如何構建Android 1.5 Linux內核映像 - Touch 3G
Linux內核移植和yaffs2根文件系統制作V1.2(5)
編譯Linux內核
kernel編譯生成Image zImage uImage的區別
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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