導航:首頁 > 源碼編譯 > 玩具編譯器玩具內核

玩具編譯器玩具內核

發布時間:2024-07-09 07:55:09

❶ 如何編譯linux內核

內核配置完成,輸入make命令即可開始編譯內核。如果沒有修改Makefile文件並指定ARCH和CROSS_COMPILE參數,則須在命令行中指定:
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
目前大多數主機都是多核處理器,為了加快編譯進度,可以開啟多線程編譯,在make的時候加上「-jN」即可,N的值為處理器核心數目的2倍。例如對於I7 4核處理器,可將N設置為8:
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j8
採用多線程編譯的優點是能加快編譯進度,。具體可以參照ZLG《嵌入式Linux開發教程(下冊)》第1章。

❷ 濡備綍涓嬭澆鍜岀紪璇戝反宸存墭鏂鍐呮牳錛

鎮ㄥ彲浠ュ湪緗戜笂鎵懼埌瀹冪殑婧愪唬鐮侊紝鐒跺悗涓嬭澆騫剁紪璇戝畠銆備互涓嬫槸涓浜涗笅杞藉拰緙栬瘧宸村反鎵樻柉鍐呮牳鐨勬ラわ細
鎵撳紑嫻忚堝櫒錛屾悳緔㈠反宸存墭鏂鍐呮牳婧愪唬鐮侊紝騫舵壘鍒板畼鏂圭綉絝欐垨鍙淇$殑涓嬭澆婧愩
涓嬭澆宸村反鎵樻柉鍐呮牳婧愪唬鐮侊紝閫氬父鏄涓涓鍘嬬緝鍖呫
瑙e帇緙╀笅杞界殑婧愪唬鐮佸帇緙╁寘銆
鎵撳紑緇堢鎴栧懡浠ゆ彁紺虹︼紝榪涘叆瑙e帇緙╁悗鐨勬簮浠g爜鏂囦歡澶廣
浣跨敤緙栬瘧鍣ㄧ紪璇戞簮浠g爜銆傚反宸存墭鏂鍐呮牳閫氬父浣跨敤GCC緙栬瘧鍣ㄨ繘琛岀紪璇戙傚湪緇堢鎴栧懡浠ゆ彁紺虹︿腑杈撳叆浠ヤ笅鍛戒護鏉ョ紪璇戜唬鐮侊細makefilemake-j鍏朵腑錛鏄鎮ㄨ佷嬌鐢ㄧ殑綰跨▼鏁幫紝鍙浠ユ牴鎹鎮ㄧ殑璁$畻鏈烘ц兘榪涜岃皟鏁淬
絳夊緟緙栬瘧瀹屾垚銆傜紪璇戝彲鑳介渶瑕佷竴浜涙椂闂達紝鍏蜂綋鍙栧喅浜庢偍鐨勮$畻鏈烘ц兘鍜屼嬌鐢ㄧ殑綰跨▼鏁般
濡傛灉緙栬瘧鎴愬姛錛屾偍灝嗗湪婧愪唬鐮佹枃浠跺す涓鎵懼埌緙栬瘧鍚庣殑鍐呮牳鏂囦歡錛堥氬父鏄痩inux鎴杤mlinuz錛夈
灝嗙紪璇戝悗鐨勫唴鏍告枃浠跺嶅埗鍒版偍闇瑕佷嬌鐢ㄥ畠鐨勬搷浣滅郴緇熶腑錛屽苟鎸夌収鎿嶄綔緋葷粺鐨勮佹眰榪涜屽畨瑁呭拰閰嶇疆銆
璇鋒敞鎰忥紝宸村反鎵樻柉鍐呮牳鏄涓涓寮婧愰」鐩錛屽叾寮鍙戝拰緇存姢鐢辯ぞ鍖洪┍鍔ㄣ傚洜姝わ紝鎮ㄥ彲鑳戒細閬囧埌涓浜涢棶棰樻垨閿欒錛岄渶瑕佽嚜宸卞皾璇曡В鍐蟲垨瀵繪眰紺懼尯鐨勫府鍔┿

❸ 如何編譯Linux內核

一、編譯環境

ubuntu 5.10,要編譯的內核源碼版本2.6.12 二、下載並解壓源代碼 首先從linux內核的官網www.kernel.org把源代碼下載下來。為了和後面實驗要求符合,我們要下載使用O(1)調度器的源碼。因此這里下載了2.6.12版本源碼。下載 下linux-2.6.12.tar.bz2,將下載源碼放入/usr/src/目錄下。如下圖所示: 解壓該源碼: 三、構建編譯環境 現在我們得到的只是源代碼,只是許許多多的文本文件,要想使這些文件成為可以運行的程序,需要使用編譯器進行編譯以及鏈接。編譯器有很多,但在里linux下一般都使用gnu的開源編譯器套件,這里包括gcc等,現在我們安裝基本的編譯器套件,如圖所示: 四、安裝ncurses庫 這里使用Ubuntu系統,因為系統自帶的ncurses庫在支持make menuconfig的時候會出錯,所以,依然要安裝ncurses庫,這里我們從源碼安裝。首先去ncurses官網http://ftp.gnu.org/pub/gnu/ncurses/ 上下載源碼。這里我們下載5.9版本,並通過簡單的安裝方式.configure 和make、make install方式安裝。如下圖所示: 五、配置內核 一切准備工作做完,現在我們就可以配置內核了,這里我們使用make menuconfig方式。如下圖: 在使用make menuconfig這個命令後,會出現如下的字元界面,我們就可以在這個界面上對內核進行配置。但是如果這不是你第一次配置這個內核,那麼請先運行:make mrproper來清除以前的配置,回到默認配置,然後再運行:make menuconfig.
在這里,我們以對cpu支持的配置為例,其餘的選項就不一一詳述,首先查看本機的cpu類型,如下圖:

在這里我們可以看到,我的電腦的cpu是AMD Athlon的,因此我們在cpu選項裡面選用AMD,如下圖所示:

在這里需要注意的是:
A、 cpu的設置在linux內核編譯過程中,不是必需的,即使保持默認的386選項(我們剛才把它改成了AMD),內核也能正常運行,只不過運行慢一些而已。
B、 一般容易出問題的地方在於Device Driver的設置。我在一開始就遇到了在內核編譯完,通過grub引導系統過程中報 「ALERT! /dev/sda1 does not exist . Dropping to a shell!」的錯誤。這是因為硬碟驅動沒有配置好而造成的。運行lspci命令,查看到下面這行:

由此確定,需要配置SCSI、PCI-X、Fusion-MPT驅動,需要在響應的驅動選項里將[M]設置為[*],因為硬碟驅動是在系統開機的時候載入,所以不能以模塊形式載入。

把這幾個驅動內部的選項全部改為[*]:

六、編譯內核

對內核的配置完成之後,現在就可以開始編譯內核了,只需要一個簡單的make命令即可,之後我們就只能慢慢等,直到編譯完成,在我的電腦上,大概用了25分鍾。下圖是運行make後的部分輸出。

七、安裝內核
編譯完成之後,我們需要安裝內核,主要分為如下幾步:
1)、安裝模塊

安裝模塊,對於內核來說,每一個內核版本有自己的模塊目錄,默認在/lib/moles/內核版本號這個目錄下,make moles_install會創建對應的目錄,並把對應的模塊文件拷貝過去。注意,這一步必須要在編譯過內核再做。

2)、拷貝bzImage文件

bzImage文件是內核映像文件,是啟動內核所必需的,我們應當把它拷貝到/boot目錄下。在這里,我為自己新建了一個目錄,我們把它拷貝過去,並且按照一般內核映像文件的命名方式為它改名為vmlinuz-2.6.12。

3)、製作initrd文件
initrd文件命名為initrd.img-2.6.12

4)、修改grub啟動項
要能引導起我們的新系統,需要更改grub配置,增加啟動選項。ubuntu 5.10的grub版本比較低,配置文件為/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有啟動項基礎上,添加我們自己的啟動項,並把它設為默認啟動項,配置如下:

5)重啟
不出意外的話,我們的內核已經正常載入了,運行uname -a,會發現,內核版本已經是2.6.12了。

❹ 操作系統內核和編譯器哪個難度更大

二者都屬於系統級的軟體,難度相當,但還要看操作系統是否開源,如果沒有開源,那難度就不是提升一點點了。

❺ 怎麼用Visual Studio編譯內核驅動

在Win8以前開發內核驅動,准備編譯環境是個較繁瑣的事情。程序員需要手動下載WDK並安裝(注1),開發環境就在安裝好的WDK中。WDK是Windows Driver Kit縮寫,即Windows驅搏陵告動開發包。它提供的開發環境簡陋得很,它不是一個便於開發的IDE環境,而僅僅是一些散裝的編譯工具包。

安裝好WDK後,WDK的編譯環境鏈接就顯示在開始菜單中了,要小心不能將它們刪掉,否則會麻煩,因為手動生成鏈接是麻煩事,後文會講。
編譯環境是分類的。首先根據目標系統分類,也就是要編譯生成運行在什麼OS上的目標文件。微軟大部分的產品都保持了向後兼容的習慣,這條規律也適用於此處:使用Win7子系統環境編譯出來的驅動文件,一般都能運行在Vista和XP系統上,反之就不會成立(注2)。
其次根據硬體平台分類,現在Windows系統能夠運行的平台有四個:X86,X64,IA64和ARM。其中ARM是Win8才開始的故事,這里還輪不到它出場,這樣就只有前面三個硬體平台(注3)。
最後又要根據編譯版本來分,即Checked(也可認做Debug)和Free(也可認作Release)這兩種。這樣來看,每個OS組別下面,就一汪滾定有6個編譯環境鏈接。
在這本書裡面,如果用舊版本WDK編譯驅動,就默認使用Win7目標系統的編譯環境,生成Checked版本,目標平台是X86或X64。所以就只會選兩種:X86 Checked Build Environment和X64 Checked Build Environment.
編譯環境打開來其實就是個控制台。它當然不同於直接從cmd.exe運行起來的控制台環境,區別在哪裡呢?我們已經知道,上圖的這些黑色的編譯環境圖標,其實都是快捷方式。不妨就看看它的快捷方式的Target內容,或許就知道端倪了。以X64 Checked Build Environment這個環境為例,打開來看到如下內容:
C:\Windows\System32\cmd.exe /k C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x64 WIN7
這一行內容仔細一看就很簡單了。原來所謂的編譯環境,就是一個運行cmd.exe的控制台進程,只不過它執行了用於初始化的/k參數。在Cmd.exe命令的幫助中,/k參數是這樣描述的:Carries out the command specified by string but remains(執行一個命令,執行完之後不退出程序)。也就是說,啟動控制台進程並執行命令,執行完後,控制台程序留給用戶繼續使用。
那麼/k之後的所有內容,都是一條初始化的命令:
C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x64 WIN7
它卻又可拆成幾個部分來分析。第一個setenv.bat是初始化編譯環境的批文件。後面的是它的參數:第一個參數,是WDK的路徑,通過它可以找到編譯器程序;第二個參數是指明要編譯生成checked版本目標文件;第三個指明硬體平台是x64;第三個指明目標系統是Win7。
位於WDK中的Setenv.bat文件是負責編譯環境配置的總廚,你把什麼參數遞給它,它就給你配出什麼類型的編譯環境來(菜也)。
怎麼在這個控制台裡面編譯驅動呢?我們統一用使用以下步驟:

通過CD命令,定位到含有source文件的那個驅動目錄;
輸入build或bld(build –cz的簡寫)命令進行編譯;
如果編譯成功,將生成驅動文件,否則會有錯誤或警告信息顯示出來;也可通過查看目錄文件夾下面的相關log文件查看詳細的錯誤或警告信息。

走到這里,基明編譯的事情算弄明白了。可能還會有朋友問我,我用什麼東西寫代碼呢?不好意思,關於這個問題,此時還沒有康莊大道供大家駟馬高車,不過千萬條小路卻是現成的。您可以用notepad記事本或者任何文本編輯器來編輯代碼,如果不嫌麻煩,用Visual Studio寫代碼也可以,只不過僅作代碼編輯而已。

❻ 硬體與內核的關系,或者說 硬體與編譯器的關系

INT的數據存放與別的類型數據存放沒有不同(數據長短會區別)
真正的不同是在調用該段數據時所進行的處理(編譯時就已經決定了)
也許可以嘗試下一個數據和指向它的指針用不同數據類型調用會有何不同
(由於本人長期使用的是匯編,上面只是猜想而已)

閱讀全文

與玩具編譯器玩具內核相關的資料

熱點內容
phpexif信息 瀏覽:540
單片機三位元組浮點數 瀏覽:754
命令與征服泰伯利亞戰爭下載 瀏覽:376
c窗口界面編程 瀏覽:21
hypermill編程能做模板嗎 瀏覽:780
計算機網路最經典的演算法 瀏覽:626
華為思科的配置命令 瀏覽:869
linux設置光碟啟動 瀏覽:359
程序員俱樂部注冊 瀏覽:17
洗潔精雞蛋盤解壓視頻 瀏覽:291
企業內網加密app 瀏覽:49
騰訊雲伺服器怎麼設置本地網路 瀏覽:623
日常程序員 瀏覽:513
哪個pe有bit加密功能 瀏覽:108
rust伺服器是用什麼ip 瀏覽:692
java隨機字元串生成 瀏覽:551
數碼寶貝編程人物 瀏覽:390
php多用戶建站系統 瀏覽:624
加密防盜地上栓價位 瀏覽:671
比澤爾壓縮機下載 瀏覽:421