




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二章第二章 搭建搭建Linux交叉編譯開(kāi)發(fā)環(huán)境交叉編譯開(kāi)發(fā)環(huán)境Cross compiling environmentCopyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.1 什么是交叉編譯什么是交叉編譯 什么是交叉編譯呢?簡(jiǎn)單地說(shuō),就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼。這里需要注意的是所謂平臺(tái),實(shí)際上包含兩個(gè)概念:體系結(jié)構(gòu)(Architecture)和操作系統(tǒng)(Operating System)。同一個(gè)體系結(jié)構(gòu)可以運(yùn)行不同的操作系統(tǒng);同一個(gè)操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運(yùn)行。 Copyright 2003-2007 S
2、inoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈2.2.1 編譯工具鏈編譯工具鏈以下是一個(gè)基于RedHat linux的交叉編譯環(huán)境的建立過(guò)程。整個(gè)編譯過(guò)程包括:1.下載源文件、補(bǔ)丁和建立編譯的目錄;2.建立內(nèi)核頭文件;3.建立二進(jìn)制工具(binutils);4.建立初始編譯器(bootstrap gcc);5.建立c庫(kù)(glibc);6.建立全套編譯器(full gcc)。 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈
3、建立交叉編譯開(kāi)發(fā)工具鏈(1)下載源文件、補(bǔ)丁和建立編譯的目錄 a, 下載:linux-2.4.21+rmk2;binutils-2.10.1;gcc-2.95.3;glibc-2.2.3;glibc-linuxthreads-2.2.3 b, 建目錄:/home/xxx/embedded 下建立三個(gè)子目錄 build-tools、kernel 和 tools c, 需要輸出環(huán)境變量 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈d, 建立編譯目錄: build-binutil
4、s編譯binutils的目錄 build-boot-gcc編譯gcc 啟動(dòng)部分的目錄 build-glibc編譯glibc的目錄 build-gcc編譯gcc 全部的目錄gcc-patch放gcc的補(bǔ)丁的目錄Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈(2)建立內(nèi)核頭文件a, 把內(nèi)核源代碼放入$PRJROOT /kernel 目錄 b,給 Linux 內(nèi)核打上補(bǔ)丁c,編譯內(nèi)核生成頭文件d, 建立正確的鏈接Copyright 2003-2007 SinoSys. All Ri
5、ghts Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈(3)建立二進(jìn)制工具(binutils)a,解壓binutils源文件b,然后進(jìn)入build-binutils目錄配置和編譯binutils 注意:nadd2line將要找的地址轉(zhuǎn)成文件和行號(hào),它要使用 debug 信息。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈nar產(chǎn)生、修改和解開(kāi)一個(gè)存檔文件。nasgnu 的匯編器。nc+filtC+ 和 java 中有一種重載函數(shù),所用
6、的重載函數(shù)最后會(huì)被編譯轉(zhuǎn)化成匯編的標(biāo)號(hào),c+filt 就是實(shí)現(xiàn)這種反向的轉(zhuǎn)化,根據(jù)標(biāo)號(hào)得到函數(shù)名。ngaspgnu 匯編器預(yù)編譯器。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈nldgnu 的連接器。nnm列出目標(biāo)文件的符號(hào)和對(duì)應(yīng)的地址。nobjcopy將某種格式的目標(biāo)文件轉(zhuǎn)化成另外格式的目標(biāo)文件。nobjdump顯示目標(biāo)文件的信息。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具
7、鏈建立交叉編譯開(kāi)發(fā)工具鏈nranlib為一個(gè)存檔文件產(chǎn)生一個(gè)索引,并將這個(gè)索引存入存檔文件中。nreadelf顯示elf格式的目標(biāo)文件的信息。nsize顯示目標(biāo)文件各個(gè)節(jié)的大小和目標(biāo)文件的大小。nstrings打印出目標(biāo)文件中可以打印的字符串,有個(gè)默認(rèn)的長(zhǎng)度,為4。nstrip剝掉目標(biāo)文件的所有的符號(hào)信息。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈(4)建立初始編譯器(bootstrap gcc)a,進(jìn)入 build-tools 目錄,將 gcc 源代碼解壓 b,然后進(jìn)入
8、gcc-2.95.3目錄給gcc打上補(bǔ)丁 c,配置boostrap gcc, 后面要用bootstrap gcc 來(lái)編譯 glibc 庫(kù) d,編譯并安裝boot-gcc Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈注意:ngccgnu 的 C 語(yǔ)言編譯器。nunprotoize將 ANSI C 的源碼轉(zhuǎn)化為 K&R C 的形式,去掉函數(shù)原型中的參數(shù)類型。ncppgnu的 C 的預(yù)編譯器。ngcovgcc 的輔助測(cè)試工具,可以用它來(lái)分析和優(yōu)化程序。Copyright 2003
9、-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈(5)建立c庫(kù)(glibc)a, 解壓 glibc-2.2.3.tar.gz 和glibc-linuxthreads-2.2.3.tar.gz源代碼 b,進(jìn)入build-glibc目錄配置glibc c,編譯和安裝 glibc Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈注意:然后還要修改libc.so文件,將GROUP ( /lib/l
10、ibc.so.6 /lib/libc_nonshared.a)改為:GROUP ( libc.so.6 libc_nonshared.a)這樣連接程序ld就會(huì)在 libc.so 所在的目錄查找它需要的庫(kù),因?yàn)橹鳈C(jī)/lib目錄可能已經(jīng)裝了一個(gè)相同名字的庫(kù),一個(gè)為編譯可以在宿主機(jī)上運(yùn)行的程序的庫(kù),而不是用于交叉編譯的。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈(6)建立全套編譯器(full gcc)在建立boot-gcc 的時(shí)候,我們只支持了C。到這里,我們就要建立全套編譯器
11、,來(lái)支持C和C+ 注意:ng+gnu的 c+ 編譯器。nprotoize與unprotoize相反,將K&R C的源碼轉(zhuǎn)化為ANSI C的形式,函數(shù)原型中加入?yún)?shù)類型。nc+gnu的c+編譯器。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈2.2.2 下載工具鏈下載工具鏈這里主要介紹一下這里主要介紹一下Denx公司發(fā)布的一整套開(kāi)放源碼公司發(fā)布的一整套開(kāi)放源碼的 嵌 入 式的 嵌 入 式 L i n u x 開(kāi) 發(fā) 工 具 鏈開(kāi) 發(fā) 工 具 鏈 E L D K(Embedded
12、 Linux Development Kit) nELDK可以安裝和運(yùn)行在以下主機(jī)環(huán)境中:nFedora Core 1, 2 , 3 nRed Hat Linux 7.3, 8.0, 9 nSuSE Linux 8.x, 9.0, 9.1, 9.2 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈nDebian 3.0 (Woody) and testing (Sarge) nUbuntu 4.10 nFreeBSD 5.0nSuse Linux 7.2, 7.3 nMandr
13、ake 8.2 nSlackware 8.1beta2 nGentoo Linux 1.4_rc2 nELDK同時(shí)支持ARM、PPC、MIPS等多種處理器。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈ELDK包括了一個(gè)安裝工具和許多RPM包,他們可以安裝到用戶的交叉編譯的主機(jī)的硬盤(pán)中。ELDK的RPM包可以分為2種:n嵌入式Linux開(kāi)發(fā)工具;n為目標(biāo)處理器編譯好的工具和元件。n其中,第一部分包括執(zhí)行在開(kāi)發(fā)主機(jī)上的交叉編譯工具,有GNU交叉編譯器GCC、Binutils和G
14、DB等。n第二部分是一些已經(jīng)編譯好的、可以在目標(biāo)開(kāi)發(fā)板上運(yùn)行的工具和庫(kù)。這些工具和庫(kù)可以用來(lái)建立一個(gè)Linux的Roofs文件系統(tǒng)。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.2 建立交叉編譯開(kāi)發(fā)工具鏈建立交叉編譯開(kāi)發(fā)工具鏈2.2.3 驗(yàn)證工具鏈驗(yàn)證工具鏈注意:通過(guò)上述兩種方式建立的工具鏈,還需要經(jīng)過(guò)驗(yàn)證方可使用,我們主要通過(guò)實(shí)際編譯一個(gè)例子程序來(lái)驗(yàn)證。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)n在嵌入式軟件開(kāi)發(fā)過(guò)程中
15、,有些主機(jī)服務(wù)是必要的,同時(shí)也會(huì)為我們的開(kāi)發(fā)工作帶來(lái)便利。n這里主要介紹四種主機(jī)服務(wù):samba、DHCP、TFTP和NFS。Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)2.3.1 配置配置sambanSamba服務(wù)使Linux和Windows之間實(shí)現(xiàn)文件共享,方便對(duì)文件的編輯。1) 修改samba配置文件/etc/samba/smb.conf 2) 為 Samba 創(chuàng)建一個(gè)單獨(dú)的口令文件。要根據(jù)你的現(xiàn)存 /etc/passwd 文件來(lái)創(chuàng)建 3) 改變Samba口令文件的權(quán)限許可,因此只有根用
16、戶才有讀寫(xiě)權(quán)限 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)4) 要設(shè)置每個(gè) Samba 用戶的口令,使用以下命令(把username 替換為每個(gè)用戶的用戶名) 5) 加密口令必須在Samba配置文件中被啟用6) 在shell提示下鍵入 service smb restart來(lái)確定smb服務(wù)被啟動(dòng) 7) 為避免每次啟動(dòng)主機(jī)都要手工啟動(dòng)samba服務(wù),使用命令使得samba服務(wù)在每次系統(tǒng)啟動(dòng)時(shí)都默認(rèn)執(zhí)行 Copyright 2003-2007 SinoSys. All Rights Reserv
17、ed 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)2.3.2 配置配置DHCPnDHCP是動(dòng)態(tài)主機(jī)配置協(xié)議。這個(gè)協(xié)議用于向計(jì)算機(jī)自動(dòng)提供IP地址,子網(wǎng)掩碼和路由信息。在開(kāi)發(fā)的過(guò)程中,目標(biāo)系統(tǒng)并沒(méi)有自己的靜態(tài)IP地址,它是在啟動(dòng)時(shí)向DHCP服務(wù)器申請(qǐng),因此需要在主機(jī)上配置DHCP服務(wù),以便在目標(biāo)系統(tǒng)請(qǐng)求IP時(shí),動(dòng)態(tài)為它分配IP地址。 nDHCP服務(wù)的配置文件為/etc/dhcpd.conf,通過(guò)修改該文件進(jìn)行配置。etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。 Copyright 2003-2007 SinoSys. All Ri
18、ghts Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)(1) DHCP配置文件中的parameters(參數(shù)):表明如何執(zhí)行任務(wù),是否要執(zhí)行任務(wù),或?qū)⒛男┚W(wǎng)絡(luò)配置選項(xiàng)發(fā)送給客戶 (2) DHCP配置文件中的declarations (聲明):用來(lái)描述網(wǎng)絡(luò)布局、提供客戶的IP地址等 (3) DHCP配置文件中的option(選項(xiàng)):用來(lái)配置DHCP可選參數(shù),全部用option關(guān)鍵字作為開(kāi)始 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)(4)重新啟動(dòng)dhcp服務(wù) (5)為避免
19、每次啟動(dòng)主機(jī)都要手工啟動(dòng)dhcp服務(wù),使用命令使得dhcp服務(wù)在每次系統(tǒng)啟動(dòng)時(shí)都默認(rèn)執(zhí)行 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)2.3.3 配置配置TFTP在目標(biāo)系統(tǒng)的開(kāi)發(fā)過(guò)程中,Linux內(nèi)核是從主機(jī)下載到目標(biāo)系統(tǒng)上解壓并運(yùn)行的,因此主機(jī)必須提供這種文件傳輸服務(wù)。Tftp是一種簡(jiǎn)單的文件傳輸協(xié)議,多用于嵌入系統(tǒng)應(yīng)用中,因此主機(jī)需要配置tftp服務(wù),供下載內(nèi)核時(shí)使用 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3
20、配置主機(jī)服務(wù)配置主機(jī)服務(wù)(1)修改配置參數(shù)(2)在主機(jī)上創(chuàng)建/tftpboot目錄,以供存放內(nèi)核(3)重新啟動(dòng)tftp服務(wù) (4)為避免每次啟動(dòng)主機(jī)都要手工啟動(dòng)tftp服務(wù),使用命令使得tftp服務(wù)在每次系統(tǒng)啟動(dòng)時(shí)都默認(rèn)執(zhí)行 Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)2.3.4 配置配置NFS網(wǎng)絡(luò)文件系統(tǒng)(NFS)是一種在網(wǎng)絡(luò)上的機(jī)器間共享文件的方法,在開(kāi)發(fā)的過(guò)程中,目標(biāo)系統(tǒng)沒(méi)有足夠的本地存儲(chǔ)設(shè)備供使用,它可以通過(guò)主機(jī)提供的NFS服務(wù),使用在主機(jī)上的文件系統(tǒng),就如同位于本地硬盤(pán)驅(qū)動(dòng)器上一樣
21、Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)(1)修改NFS配置文件 注意:上面格式表示,同一共享目錄提供給兩個(gè)不同的主機(jī),但提供給這兩臺(tái)主機(jī)的權(quán)限和參數(shù)可以是不同的??梢栽O(shè)定的參數(shù)主要有以下幾種:Copyright 2003-2007 SinoSys. All Rights Reserved 雙實(shí)科技雙實(shí)科技2.3 配置主機(jī)服務(wù)配置主機(jī)服務(wù)nrw:可讀寫(xiě)的權(quán)限;nro:只讀的權(quán)限;nroot_squash:root用戶的所有請(qǐng)求映射成如anonymous用戶一樣的權(quán)限(默認(rèn));nno_root_squash:保留共享文件的UID和GID(默認(rèn));nall_squash:共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄;Co
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農(nóng)村電商服務(wù)站農(nóng)村電商產(chǎn)品開(kāi)發(fā)與市場(chǎng)推廣報(bào)告
- 2025年農(nóng)村電商扶貧資金申請(qǐng)的科技創(chuàng)新與應(yīng)用報(bào)告
- 油田安全培訓(xùn)試題及答案
- 2025年農(nóng)產(chǎn)品質(zhì)量安全追溯體系構(gòu)建與農(nóng)產(chǎn)品國(guó)際貿(mào)易法規(guī)適應(yīng)性分析
- 2017國(guó)家保安員資格考試題及答案
- 8年級(jí)電路題庫(kù)及答案
- 2025年免疫治療在自身免疫性胃炎治療新方案研究報(bào)告
- 自動(dòng)化分揀系統(tǒng)-第2篇-洞察及研究
- 魯濱遜漂流記測(cè)試題及答案
- 雨污管網(wǎng)改造項(xiàng)目實(shí)施方案(參考)
- 國(guó)家開(kāi)放大學(xué)《高等數(shù)學(xué)基礎(chǔ)》形考任務(wù)1-4參考答案
- 2022年河北唐山市公安交通警察支隊(duì)第五交通警察大隊(duì)招聘輔警17人筆試備考題庫(kù)及答案解析
- GB/T 9966.16-2021天然石材試驗(yàn)方法第16部分:線性熱膨脹系數(shù)的測(cè)定
- GB/T 9800-1988電鍍鋅和電鍍鎘層的鉻酸鹽轉(zhuǎn)化膜
- GB/T 7193-2008不飽和聚酯樹(shù)脂試驗(yàn)方法
- 陜西省府谷縣國(guó)能礦業(yè)有限公司環(huán)??⒐を?yàn)收檢測(cè)報(bào)告公示
- 人教版高中政治必修四課本考點(diǎn)總結(jié)
- 第5章 自動(dòng)駕駛儀系統(tǒng)《民航飛機(jī)自動(dòng)飛行控制系統(tǒng)》
- DB4401-T 19-2019涉河建設(shè)項(xiàng)目河道管理技術(shù)規(guī)范-(高清現(xiàn)行)
- 五星級(jí)酒店投資預(yù)算
- 兒科常用藥、用藥特點(diǎn)及護(hù)理ppt
評(píng)論
0/150
提交評(píng)論