第2章-搭建Linux交叉編譯開發(fā)環(huán)境_第1頁
第2章-搭建Linux交叉編譯開發(fā)環(huán)境_第2頁
第2章-搭建Linux交叉編譯開發(fā)環(huán)境_第3頁
第2章-搭建Linux交叉編譯開發(fā)環(huán)境_第4頁
第2章-搭建Linux交叉編譯開發(fā)環(huán)境_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第二章搭建

Linux交叉編譯開發(fā)環(huán)境

Crosscompilingenvironment2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.1什么是交叉編譯

什么是交叉編譯呢?簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。這里需要注意的是所謂平臺,實際上包含兩個概念:體系結構(Architecture)和操作系統(tǒng)(OperatingSystem)。同一個體系結構可以運行不同的操作系統(tǒng);同一個操作系統(tǒng)也可以在不同的體系結構上運行。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈

2.2.1編譯工具鏈以下是一個基于RedHat

linux的交叉編譯環(huán)境的建立過程。整個編譯過程包括:下載源文件、補丁和建立編譯的目錄;建立內(nèi)核頭文件;建立二進制工具(binutils);建立初始編譯器(bootstrapgcc);建立c庫(glibc);建立全套編譯器(fullgcc)。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈下載源文件、補丁和建立編譯的目錄

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下建立三個子目錄build-tools、kernel和tools c,需要輸出環(huán)境變量2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈 d,建立編譯目錄: build-binutils——編譯binutils的目錄

build-boot-gcc——編譯gcc

啟動部分 的目錄

build-glibc——編譯glibc的目錄

build-gcc——編譯gcc

全部的目錄

gcc-patch——放gcc的補丁的目錄2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈建立內(nèi)核頭文件

a,把內(nèi)核源代碼放入$PRJROOT/kernel目錄

b,給Linux內(nèi)核打上補丁 c,編譯內(nèi)核生成頭文件 d,建立正確的鏈接2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈建立二進制工具(binutils) a,解壓binutils源文件 b,然后進入build-binutils目錄配置和編譯binutils

注意: add2line——將要找的地址轉(zhuǎn)成文件和行號,它要使用debug信息。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈ar——產(chǎn)生、修改和解開一個存檔文件。as——gnu的匯編器。c++filt——C++和java中有一種重載函數(shù),所用的重載函數(shù)最后會被編譯轉(zhuǎn)化成匯編的標號,c++filt

就是實現(xiàn)這種反向的轉(zhuǎn)化,根據(jù)標號得到函數(shù)名。gasp——gnu匯編器預編譯器。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈ld——gnu的連接器。nm——列出目標文件的符號和對應的地址。objcopy——將某種格式的目標文件轉(zhuǎn)化成另外格式的目標文件。objdump——顯示目標文件的信息。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈ranlib——為一個存檔文件產(chǎn)生一個索引,并將這個索引存入存檔文件中。readelf——顯示elf格式的目標文件的信息。size——顯示目標文件各個節(jié)的大小和目標文件的大小。strings——打印出目標文件中可以打印的字符串,有個默認的長度,為4。strip——剝掉目標文件的所有的符號信息。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈建立初始編譯器(bootstrapgcc) a,進入build-tools目錄,將gcc

源代碼解壓 b,然后進入gcc-2.95.3目錄給gcc打上補丁 c,配置boostrap

gcc,后面要用bootstrapgcc

來編譯glibc

庫 d,編譯并安裝boot-gcc

2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈

注意:gcc——gnu的C語言編譯器。unprotoize——將ANSIC的源碼轉(zhuǎn)化為K&RC的形式,去掉函數(shù)原型中的參數(shù)類型。cpp——gnu的C的預編譯器。gcov——gcc

的輔助測試工具,可以用它來分析和優(yōu)化程序。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈建立c庫(glibc) a,解壓glibc-2.2.3.tar.gz和glibc-linuxthreads-2.2.3.tar.gz源代碼 b,進入build-glibc目錄配置glibc

c,編譯和安裝glibc

2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈

注意: 然后還要修改libc.so文件,將GROUP(/lib/libc.so.6/lib/libc_nonshared.a) 改為:GROUP(libc.so.6libc_nonshared.a) 這樣連接程序ld就會在libc.so

所在的目錄查找它需要的庫,因為主機/lib目錄可能已經(jīng)裝了一個相同名字的庫,一個為編譯可以在宿主機上運行的程序的庫,而不是用于交叉編譯的。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈建立全套編譯器(fullgcc) 在建立boot-gcc

的時候,我們只支持了C。到這里,我們就要建立全套編譯器,來支持C和C++

注意:g++——gnu的c++編譯器。protoize——與unprotoize相反,將K&RC的源碼轉(zhuǎn)化為ANSIC的形式,函數(shù)原型中加入?yún)?shù)類型。c++——gnu的c++編譯器。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈2.2.2下載工具鏈這里主要介紹一下Denx公司發(fā)布的一整套開放源碼的嵌入式Linux開發(fā)工具鏈——ELDK(EmbeddedLinuxDevelopmentKit)

ELDK可以安裝和運行在以下主機環(huán)境中:FedoraCore1,2,3RedHatLinux7.3,8.0,9SuSELinux8.x,9.0,9.1,9.22024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈Debian3.0(Woody)andtesting(Sarge)Ubuntu4.10FreeBSD5.0SuseLinux7.2,7.3Mandrake8.2Slackware8.1beta2GentooLinux1.4_rc2ELDK同時支持ARM、PPC、MIPS等多種處理器。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈 ELDK包括了一個安裝工具和許多RPM包,他們可以安裝到用戶的交叉編譯的主機的硬盤中。ELDK的RPM包可以分為2種:嵌入式Linux開發(fā)工具;為目標處理器編譯好的工具和元件。其中,第一部分包括執(zhí)行在開發(fā)主機上的交叉編譯工具,有GNU交叉編譯器GCC、Binutils和GDB等。第二部分是一些已經(jīng)編譯好的、可以在目標開發(fā)板上運行的工具和庫。這些工具和庫可以用來建立一個Linux的Roofs文件系統(tǒng)。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技2.2建立交叉編譯開發(fā)工具鏈2.2.3驗證工具鏈

注意: 通過上述兩種方式建立的工具鏈,還需要經(jīng)過驗證方可使用,我們主要通過實際編譯一個例子程序來驗證。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

在嵌入式軟件開發(fā)過程中,有些主機服務是必要的,同時也會為我們的開發(fā)工作帶來便利。這里主要介紹四種主機服務:samba、DHCP、TFTP和NFS。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

2.3.1配置sambaSamba服務使Linux和Windows之間實現(xiàn)文件共享,方便對文件的編輯。

1) 修改samba配置文件/etc/samba/smb.conf

2) 為Samba創(chuàng)建一個單獨的口令文件。要根據(jù)你的現(xiàn)存/etc/passwd

文件來創(chuàng)建 3) 改變Samba口令文件的權限許可,因此只有根用戶才有讀寫權限2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

4) 要設置每個Samba用戶的口令,使用以下命令(把username替換為每個用戶的用戶名) 5) 加密口令必須在Samba配置文件中被啟用 6) 在shell提示下鍵入servicesmbrestart來確定smb服務被啟動 7) 為避免每次啟動主機都要手工啟動samba服務,使用命令使得samba服務在每次系統(tǒng)啟動時都默認執(zhí)行2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

2.3.2配置DHCPDHCP是動態(tài)主機配置協(xié)議。這個協(xié)議用于向計算機自動提供IP地址,子網(wǎng)掩碼和路由信息。在開發(fā)的過程中,目標系統(tǒng)并沒有自己的靜態(tài)IP地址,它是在啟動時向DHCP服務器申請,因此需要在主機上配置DHCP服務,以便在目標系統(tǒng)請求IP時,動態(tài)為它分配IP地址。DHCP服務的配置文件為/etc/dhcpd.conf,通過修改該文件進行配置。etc/dhcpd.conf通常包括三部分:parameters、declarations、option。2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

(1) DHCP配置文件中的parameters(參數(shù)):表明如何執(zhí)行任務,是否要執(zhí)行任務,或?qū)⒛男┚W(wǎng)絡配置選項發(fā)送給客戶

(2) DHCP配置文件中的declarations(聲明):用來描述網(wǎng)絡布局、提供客戶的IP地址等 (3) DHCP配置文件中的option(選項):用來配置DHCP可選參數(shù),全部用option關鍵字作為開始2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

重新啟動dhcp服務為避免每次啟動主機都要手工啟動dhcp服務,使用命令使得dhcp服務在每次系統(tǒng)啟動時都默認執(zhí)行2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

2.3.3配置TFTP 在目標系統(tǒng)的開發(fā)過程中,Linux內(nèi)核是從主機下載到目標系統(tǒng)上解壓并運行的,因此主機必須提供這種文件傳輸服務。Tftp是一種簡單的文件傳輸協(xié)議,多用于嵌入系統(tǒng)應用中,因此主機需要配置tftp服務,供下載內(nèi)核時使用2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

修改配置參數(shù)在主機上創(chuàng)建/tftpboot目錄,以供存放內(nèi)核重新啟動tftp服務為避免每次啟動主機都要手工啟動tftp服務,使用命令使得tftp服務在每次系統(tǒng)啟動時都默認執(zhí)行2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

2.3.4配置NFS 網(wǎng)絡文件系統(tǒng)(NFS)是一種在網(wǎng)絡上的機器間共享文件的方法,在開發(fā)的過程中,目標系統(tǒng)沒有足夠的本地存儲設備供使用,它可以通過主機提供的NFS服務,使用在主機上的文件系統(tǒng),就如同位于本地硬盤驅(qū)動器上一樣2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

修改NFS配置文件

注意: 上面格式表示,同一共享目錄提供給兩個不同的主機,但提供給這兩臺主機的權限和參數(shù)可以是不同的??梢栽O定的參數(shù)主要有以下幾種:2024/2/26Copyright?2003-2007SinoSys.AllRightsReserved

雙實科技

2.3配置主機服務

rw:可讀寫的權限;ro:只讀的權限;root_squash:root用戶的所有請求映射成如anonymous用戶一樣的權限(默認);no_root_squash:保留共享文件的UID和GID(默認);all_squash:共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄;2024

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論