成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux uClinux建立開發(fā)環(huán)境編譯內(nèi)核

運維 系統(tǒng)運維
在進行Linux uClinux的移植和開發(fā)之前,我們需要建立系統(tǒng)的交叉編譯環(huán)境,因為做為主機我們使用的是IA32體系結(jié)構(gòu)的處理器,而開發(fā)板我們才用的是ARM體系結(jié)構(gòu)的處理器。ARM平臺的交叉編譯工具可以從Linux uClinux的官方網(wǎng)站獲得

Linux uClinux對于電腦使用的玩家的常用軟件,然后我就學習及深入的研究Linux uClinux,在這里和大家一起探討Linux uClinux的使用方法,希望對大家有用。作為Linux uClinux系統(tǒng)的移植和開發(fā)的主機最好使用Linux操作系統(tǒng),如果選擇Windows平臺作為開發(fā)平臺則需要Cygwin軟件包的支持。在這里我們選用的開發(fā)平臺是Fedora Core 2,內(nèi)核版本為2.4.x。

1.建立開發(fā)環(huán)境

在進行Linux uClinux的移植和開發(fā)之前,我們需要建立系統(tǒng)的交叉編譯環(huán)境,因為做為主機我們使用的是IA32體系結(jié)構(gòu)的處理器,而開發(fā)板我們才用的是ARM體系結(jié)構(gòu)的處理器。ARM平臺的交叉編譯工具可以從Linux uClinux的官方網(wǎng)站獲得(www.Linux uClinux.org)。

在這里我們采用的是arm-elf-tools-20030314.sh,該文件是一個自解壓文件,可以直接執(zhí)行程序安裝。#./arm-elf-tools-20030314.sh如果不能執(zhí)行該文件,則需要修改一下文件的可執(zhí)行屬性#chmod 755 arm-elf-tools-20030314.sh然后再執(zhí)行程序的安裝。可執(zhí)行文件按會被默認安裝在/usr/local/bin目錄下。

2.編譯Linux uClinux內(nèi)核

Linux uClinux是一款支持無MMU單元的嵌入式操作系統(tǒng),我們可以從其官方網(wǎng)站獲取最新版本的內(nèi)核文件(www.Linux uClinux.org)。我們將下載的Linux uClinux內(nèi)核文件放入我們的工作目錄(/home/jelly/kernel/),然后使用tar工具解壓內(nèi)核文件。

$cd /home/jelly/kernel/$tar xvzf Linux uClinux-dist-200xxxxx.tar.gz經(jīng)過一段時間的解壓后將在工作目錄下會生成Linux uClinux-dist文件夾。在編譯內(nèi)核之前我們首先要做的是配置內(nèi)核,常用的配置方式有如下幾種:
make xconfig - X Windows圖形界面的配置選項
make menuconfig - Console圖形界面的配置選項
make config - 命令接口的配置選項

在這里需要注意的是Linux uClinux是不支持loadable modules的,因此應該取消對該模塊的支持。
$cd Linux uClinux-dist/
$make menuconfig

配置你需要的選項,比如處理器類型,開發(fā)板類型,內(nèi)核版本等。配置好之后選擇Saving and Exiting保存退出。

編譯Linux uClinux內(nèi)核的常用選項有:make distclean該命令將清除以前編譯時候產(chǎn)生的文件,包括.config文件,所有目標文件以及內(nèi)核映象文件。make clean該命令與make distclean相似,也是清除之前編譯時候產(chǎn)生的文件make dep 這個只需要在第一次編譯的時候執(zhí)行,為了是建立文件之間的依賴關(guān)系,make命令會根據(jù)這個依賴關(guān)系來確定哪些文件需要重新編譯,哪些文件可以跳過。

make lib_only編譯uClibcx庫,make user_only編譯用戶制定的應用程序,比如初始化進程init,bash,以及集成了很多常用工具的嵌入式軟件包busybox。make romfsLinux uClinux經(jīng)常才用romfs(只讀文件系統(tǒng))來作為系統(tǒng)的根文件系統(tǒng),所以首先需要將之前編譯的很多應用程序以Linux uClinux所需要的目錄格式存放起來。

比如將可執(zhí)行文件放在bin目錄下,將配置文件放在etc目錄下。該命令執(zhí)行后會在Linux uClinux-dist目錄下生成一個romfs的目錄,并且將文件系統(tǒng)所需要的文件組織起來,以便之后生成fomfs的映象文件。

make image生成romfs文件系統(tǒng)的映象文件,以及l(fā)inux的映象文件。該Linux的映象文件是elf格式的,是不能直接下載到開發(fā)板上執(zhí)行的(里面包含了大量的調(diào)試信息,elf文件執(zhí)行前的環(huán)境建立信息等內(nèi)容。該文件可以使用arm-elf-objcopy工具來生成可以直接在RAM中執(zhí)行的binary文件)。

make linux執(zhí)行該命令之后將生成linux內(nèi)核文件。make zImage建立經(jīng)過gzip算法壓縮過的內(nèi)核映象文件,通常zImage產(chǎn)生的內(nèi)核映象文件無法超過512KB大小。make modules建立內(nèi)核模塊注:有些Linux uClinux版本提供了更多的編譯方式,比如make linux.bin。關(guān)于其他的編譯方式可以參看內(nèi)核源碼目錄里的Makefile文件。

在介紹完常用的幾個內(nèi)核編譯命令后,我們可以使用如下的幾個命令來建立我們所需要的內(nèi)核以及文件系統(tǒng):
make dep
make clean
make all

這樣在Linux uClinux-dist/linux-2.x.x目錄下會生成linux, System.map,在Linux uClinux-dist/images/目錄下會生成image.bin, linux.bin, image.ram, image.rom, romfs.img, linux.text, linux.data等文件。

如果你編譯過程中沒有出現(xiàn)錯誤,但是沒有我說的這些文件,你可以參看Makefile文件了解更多的東西。其中image.ram是直接可以下載到ram中執(zhí)行的文件。在調(diào)試階段我們就可以使用該文件。image.rom是一個zImage文件,可以自解壓的內(nèi)核,該文件需要少寫到FLASH里,而不能直接放入RAM中執(zhí)行。

3.Linux uClinux內(nèi)核建立過程

建立內(nèi)核首先是建立單獨的內(nèi)核模塊和內(nèi)核子系統(tǒng),一旦這些建立好了之后將通過連接文件將多個文件連接在一起。該連接文件一般在arch/$(ARCH)/$(PLATFORM)/$(BOARD)/$(MODEL).ld。連接器使用該連接文件生成linux文件:LD -T (MODUEL).ld crt0_$(MODUEL).o [objs] -o linux連接文件定義了內(nèi)核如何組織內(nèi)存段。

System.map文件是通過linux文件產(chǎn)生的,用于調(diào)試使用。通過該文件可以方便的確定函數(shù)的位置。該文件是通過如下方式產(chǎn)生:
NM $(LINUX) | grep -v '\(compiled\)\|\(\.o$$\)\|\(a\)' | sort > System.map

linux.data文件是包含內(nèi)核所有數(shù)據(jù)段的代碼,是通過移除linux文件中所有只讀段和其他不需要的段得到的,該文件可以通過arm-elf-objcopy來產(chǎn)生,如:
OBJCOPY -O binary --remove-section=.romvec --remove-section=.text\
  --remove-section=.ramvec --remove-section=.bss\
  --remove-section.eram linux linux.data

linux.text文件包含了所有文本段代碼,是去除數(shù)據(jù)段后的代碼OBJCOPY -O binary --remove-section=.ramvec --remove-section=.bss\
  --remove-section-.data --remove-section=.eram\
  --set-section-flags=.romvec=CONTENTS,ALLOC,LOAD,READONLY,CODE linux linux.text

linux.bin文件,是可以實際載入內(nèi)存中執(zhí)行的文件,他的建立是通過linux.text和linux.data兩個文件連接得到的,如:cat linux.text linux.data > linux.bin
該文件只是內(nèi)核,并沒有包含文件系統(tǒng)。我們可以使用如下方式將文件系統(tǒng)和內(nèi)核文件連接起來生成image.bin映象文件:cat linux.bin romfs.img > image.bin

4.手工生成ROMFS文件系統(tǒng)

建立ROMFS文件系統(tǒng)之前應該手工建立文件系統(tǒng)樹,例如通常ROMFS包含如下目錄:/bin /dev /etc /lib /proc /sbin /tmp /usr /var然后我們可以將交叉編譯好的應用程序放入/bin目錄中,之后使用genromfs工具來建立文件系統(tǒng)的映象,如:genromfs -v -V "ROM Disk" -f romfs.img -d romfs > romfs.map

最后,可以與內(nèi)核文件連接在一起,然后燒入Flash中。cat linux.bin romfs.img > image.bin

5.參考文檔

《構(gòu)建嵌入式LINUX系統(tǒng)》 O'REILLY
《Linux How To》
《Linux Documentation》

【編輯推薦】

  1. Linux磁盤停止了有點奇怪了試試其他的Fedora core 6
  2. Linux系統(tǒng)軟件簡易介紹
  3. Linux操作系統(tǒng)直接建立在內(nèi)核基礎(chǔ)上
  4. 如何將Linux安裝入Linux USB設(shè)備
  5. Linux Makefile系統(tǒng)的真相符合自由軟件慣例
責任編輯:佚名 來源: CSDN
相關(guān)推薦

2017-03-27 18:05:49

Linux內(nèi)核編譯與開發(fā)

2010-02-25 10:46:44

Linux操作系統(tǒng)

2009-12-09 09:30:04

LinuxuClinux

2010-02-26 10:25:56

2013-02-21 13:49:20

Tizen三星

2011-01-04 17:00:32

Linux內(nèi)核編譯

2010-03-02 16:13:56

Linux升級

2009-12-17 15:18:47

2009-10-16 09:45:41

Linux內(nèi)核操作系統(tǒng)

2023-10-05 15:47:04

Linux內(nèi)核編譯

2021-05-26 07:53:58

Linux運維Linux系統(tǒng)

2011-08-30 16:02:10

MTK開發(fā)環(huán)境

2011-04-25 19:15:16

2009-10-23 16:35:44

linux Debia

2010-02-02 13:26:53

Linux內(nèi)核

2023-05-08 08:05:42

內(nèi)核模塊Linux

2009-12-09 09:47:05

ibmdwRational

2010-04-20 10:12:05

2011-07-04 14:58:56

Qt 桌面 qvfb

2023-07-25 15:17:38

Linux操作系統(tǒng)開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人深夜福利 | 亚洲97| 欧美日韩精品免费观看 | h片在线看 | 国产精品国色综合久久 | 成人精品毛片国产亚洲av十九禁 | 国产精品成人品 | 中文字幕日韩欧美 | 97久久精品 | 国产精品久久视频 | 欧美日韩一区精品 | 国产高清视频在线 | 久久久久久久av麻豆果冻 | 一本一道久久a久久精品综合 | 亚洲大片一区 | 女女百合av大片一区二区三区九县 | 欧美日韩三级在线观看 | 精品国产一区二区国模嫣然 | 天天干天天草 | 欧美一区二区三区在线观看视频 | 亚洲欧美日韩精品久久亚洲区 | 久久成人高清视频 | 免费日韩av | 日韩中文字幕一区 | 亚洲成人一区二区在线 | 国产精品欧美一区二区 | 一区二区三区日韩 | 精精精精xxxx免费视频 | 精品国产乱码久久久久久蜜臀 | 黄色国产大片 | 在线观看视频中文字幕 | 欧美一级久久 | 国产精品a久久久久 | 一区二区三区av夏目彩春 | 国产欧美日韩二区 | 日韩欧美网 | 在线观看免费国产 | 综合一区 | 国产高潮av| 国产精品视频免费观看 | 日本欧美在线视频 |