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

下載本文檔

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

文檔簡介

1、第二章 搭建Linux交叉編譯開發(fā)環(huán)境Cross compiling environment 什么是交叉編譯呢?簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。這里需求留意的是所謂平臺,實踐上包含兩個概念:體系構(gòu)造Architecture和操作系統(tǒng)Operating System。同一個體系構(gòu)造可以運轉(zhuǎn)不同的操作系統(tǒng);同一個操作系統(tǒng)也可以在不同的體系構(gòu)造上運轉(zhuǎn)。 2.1 什么是交叉編譯2.2.1 編譯工具鏈以下是一個基于RedHat linux的交叉編譯環(huán)境的建立過程。整個編譯過程包括:下載源文件、補(bǔ)丁和建立編譯的目錄;建立內(nèi)核頭文件;建立二進(jìn)制工具binutils;建立初始編譯器bo

2、otstrap gcc;建立c庫(glibc);建立全套編譯器full gcc。 2.2 建立交叉編譯開發(fā)工具鏈需求:下載源文件、補(bǔ)丁和建立編譯的目錄 a, 下載:binutils-2.11.2.tar, diff-2.4.9-ac9-rmk1-np1, gcc-2.95.3.tar, glibc-2.2.4.tar, glibc-linuxthreads-2.2.4.tar, linux-2.4.9.tar, patch-2.4.9-ac9, patch-2.4.9-ac9-rmk1, patch-2.4.9-ac9-rmk2b, 建目錄:將一切的源代碼放到/usr/tmp/下;交叉編譯器將

3、安裝在/opt/host/armv5/2.2 建立交叉編譯開發(fā)工具鏈建立整個tool chain的步驟2.2 建立交叉編譯開發(fā)工具鏈(1) Installing binutils# cd /tmp# tar zxvf binutils-2.11.2.tar.gz# cd binutils-2.11.2# ./configure -target=armv5-unknown-linux -prefix=/opt/host/armv5# make# make install2.2 建立交叉編譯開發(fā)工具鏈留意:這樣就在/opt/host/armv5/bin下產(chǎn)生了binutils,它們的作用如下:ad

4、dr2line將要找的地址轉(zhuǎn)成文件和行號,它要運用 debug 信息。ar產(chǎn)生、修正和解開一個存檔文件。asgnu 的匯編器。2.2 建立交叉編譯開發(fā)工具鏈c+filtC+ 和 java 中有一種重載函數(shù),所用的重載函數(shù)最后會被編譯轉(zhuǎn)化成匯編的標(biāo)號,c+filt 就是實現(xiàn)這種反向的轉(zhuǎn)化,根據(jù)標(biāo)號得到函數(shù)名。gaspgnu 匯編器預(yù)編譯器。2.2 建立交叉編譯開發(fā)工具鏈ldgnu 的銜接器。nm列出目的文件的符號和對應(yīng)的地址。objcopy將某種格式的目的文件轉(zhuǎn)化成另外格式的目的文件。objdump顯示目的文件的信息。2.2 建立交叉編譯開發(fā)工具鏈ranlib為一個存檔文件產(chǎn)生一個索引,并將這個

5、索引存入存檔文件中。readelf顯示elf格式的目的文件的信息。size顯示目的文件各個節(jié)的大小和目的文件的大小。strings打印出目的文件中可以打印的字符串,有個默許的長度,為4。strip剝掉目的文件的一切的符號信息。2.2 建立交叉編譯開發(fā)工具鏈2輸出工具的途徑,使得以后的編譯任務(wù)能看到這些工具:# export PATH=/opt/host/armv5/bin:$PATH2.2 建立交叉編譯開發(fā)工具鏈3建立編譯需求運用的頭文件# cd /tmp# tar zxvf linux-2.4.9.tar.gz# mv linux linux-2.4.9-ac9-rmk1-np1# mv p

6、atch-2.4.9-ac9.gz patch-2.4.9-ac9-rmk1.bz2 diff-2.4.9-ac9-rmk1-np1.gz ./linux-2.4.9-ac9-rmk1-np12.2 建立交叉編譯開發(fā)工具鏈# cd linux-2.4.9-ac9-rmk1-np1 : kernel 2.4.9# gzip -cd patch-2.4.9-ac9.gz | patch -p1 : Alan Cox patch# bzip2 -cd patch-2.4.9-ac9-rmk1.bz2 | patch -p1 : Russell King patch# gzip -cd diff-2.

7、4.9-ac9-rmk1-np1.gz | patch -p1 : Nicholas Pitre patch# make menuconfig : Do to create ARM header files. When you exit, select save item.# make dep : Also do to create header files.# cd /opt/host/armv4l/armv4l-unknown-linux# cd include : If not existing, make include directory.# cp -a /usr/include/*

8、 . : Copy all header files under /usr/include dir to the current dir.# ln -s /tmp/linux-2.4.9-ac9-rmk1-np1/include/asm-arm asm# ln -s /tmp/linux-2.4.9-ac9-rmk1-np1/include/linux linux留意:要把linux的頭文件拷做來作為編譯的頭文件的緣由是,我們要編譯的是給ARM處置器運用的編譯器,那么就需求一個用于ARM處置器的Linux內(nèi)核系統(tǒng)的頭文件4編譯ARM-GCC交叉編譯器# cd gcc-2.95.3# ./con

9、figure -target=armv4l-unknown-linux -prefix=/opt/host/armv4l# make LANGUAGES=c# make LANGUAGES=c install留意:gccgnu 的 C 言語編譯器。unprotoize將 ANSI C 的源碼轉(zhuǎn)化為 K&R C 的方式,去掉函數(shù)原型中的參數(shù)類型。cppgnu的 C 的預(yù)編譯器。gcovgcc 的輔助測試工具,可以用它來分析和優(yōu)化程序。2.2 建立交叉編譯開發(fā)工具鏈建立c庫(glibc)# cd /tmp# tar zxvf glibc-2.2.4.tar.gz# mv glibc-linuxth

10、reads-2.2.4.tar.gz ./glibc-2.2.4# cd glibc-2.2.4# tar zxvf glibc-linuxthreads-2.2.4.tar.gz2.2 建立交叉編譯開發(fā)工具鏈# CC=armv5-unknown-linux-gcc ./configure arm-linux -enable-add-ons-build=i686-pc-linux-gnu -disable-iconv-with-headers=/tmp/linux-2.4.9-ac9-rmk1-np1/include-prefix=/opt/host/armv4l# make# make in

11、stall2.2 建立交叉編譯開發(fā)工具鏈留意:glibc主要是程序運轉(zhuǎn)所需求的庫函數(shù)的集合,包括輸入輸出,數(shù)學(xué),io控制等等2.2 建立交叉編譯開發(fā)工具鏈6安裝g+# cd /tmp/gcc-2.95.3# ./configure -target=armv4l-unknown-linux-with-libs=/opt/host/armv4l/lib-with-headers=/opt/host/armv4l/include-prefix=/opt/host/armv4l# make LANGUAGES=c c+# make LANGUAGES=c c+ install2.2 建立交叉編譯開發(fā)工

12、具鏈留意:g+gnu的 c+ 編譯器。protoize與unprotoize相反,將K&R C的源碼轉(zhuǎn)化為ANSI C的方式,函數(shù)原型中參與參數(shù)類型。c+gnu的c+編譯器。2.2 建立交叉編譯開發(fā)工具鏈2.2.2 下載工具鏈這里主要引見一下Denx公司發(fā)布的一整套開放源碼的嵌入式Linux開發(fā)工具鏈ELDKEmbedded Linux Development Kit ELDK可以安裝和運轉(zhuǎn)在以下主機(jī)環(huán)境中:Fedora Core 1, 2 , 3 Red Hat Linux 7.3, 8.0, 9 SuSE Linux 8.x, 9.0, 9.1, 9.2 2.2 建立交叉編譯開發(fā)工具鏈De

13、bian 3.0 (Woody) and testing (Sarge) Ubuntu 4.10 FreeBSD 5.0Suse Linux 7.2, 7.3 Mandrake 8.2 Slackware 8.1beta2 Gentoo Linux 1.4_rc2 ELDK同時支持ARM、PPC、MIPS等多種處置器。2.2 建立交叉編譯開發(fā)工具鏈ELDK包括了一個安裝工具和許多RPM包,他們可以安裝到用戶的交叉編譯的主機(jī)的硬盤中。ELDK的RPM包可以分為2種:嵌入式Linux開發(fā)工具;為目的處置器編譯好的工具和元件。其中,第一部分包括執(zhí)行在開發(fā)主機(jī)上的交叉編譯工具,有GNU交叉編譯器GCC

14、、Binutils和GDB等。第二部分是一些曾經(jīng)編譯好的、可以在目的開發(fā)板上運轉(zhuǎn)的工具和庫。這些工具和庫可以用來建立一個Linux的Roofs文件系統(tǒng)。2.2 建立交叉編譯開發(fā)工具鏈2.2.3 驗證工具鏈留意:經(jīng)過上述兩種方式建立的工具鏈,還需求經(jīng)過驗證方可運用,我們主要經(jīng)過實踐編譯一個例子程序來驗證。2.2 建立交叉編譯開發(fā)工具鏈在嵌入式軟件開發(fā)過程中,有些主機(jī)效力是必要的,同時也會為我們的開發(fā)任務(wù)帶來便利。這里主要引見四種主機(jī)效力:samba、DHCP、TFTP和NFS。2.3 配置主機(jī)效力2.3.1 配置sambaSamba效力使Linux和Windows之間實現(xiàn)文件共享,方便對文件的編

15、輯。1)修正samba配置文件/etc/samba/smb.conf 2)為 Samba 創(chuàng)建一個單獨的口令文件。要根據(jù)他的現(xiàn)存 /etc/passwd 文件來創(chuàng)建 3)改動Samba口令文件的權(quán)限答應(yīng),因此只需根用戶才有讀寫權(quán)限 2.3 配置主機(jī)效力4)要設(shè)置每個 Samba 用戶的口令,運用以下命令把username 交換為每個用戶的用戶名 5)加密口令必需在Samba配置文件中被啟用6)在shell提示下鍵入 service smb restart來確定smb效力被啟動 7)為防止每次啟動主機(jī)都要手工啟動samba效力,運用命令使得samba效力在每次系統(tǒng)啟動時都默許執(zhí)行 2.3 配置主

16、機(jī)效力2.3.2 配置DHCPDHCP是動態(tài)主機(jī)配置協(xié)議。這個協(xié)議用于向計算機(jī)自動提供IP地址,子網(wǎng)掩碼和路由信息。在開發(fā)的過程中,目的系統(tǒng)并沒有本人的靜態(tài)IP地址,它是在啟動時向DHCP效力器懇求,因此需求在主機(jī)上配置DHCP效力,以便在目的系統(tǒng)懇求IP時,動態(tài)為它分配IP地址。 DHCP效力的配置文件為/etc/dhcpd.conf,經(jīng)過修正該文件進(jìn)展配置。etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。 2.3 配置主機(jī)效力(1)DHCP配置文件中的parameters參數(shù):闡明如何執(zhí)行義務(wù),能否要執(zhí)行義務(wù),或?qū)⒛男┚W(wǎng)絡(luò)配置選項

17、發(fā)送給客戶 (2)DHCP配置文件中的declarations 聲明:用來描畫網(wǎng)絡(luò)規(guī)劃、提供客戶的IP地址等 (3)DHCP配置文件中的option選項:用來配置DHCP可選參數(shù),全部用option關(guān)鍵字作為開場 2.3 配置主機(jī)效力重新啟動dhcp效力 為防止每次啟動主機(jī)都要手工啟動dhcp效力,運用命令使得dhcp效力在每次系統(tǒng)啟動時都默許執(zhí)行 2.3 配置主機(jī)效力2.3.3 配置TFTP在目的系統(tǒng)的開發(fā)過程中,Linux內(nèi)核是從主機(jī)下載到目的系統(tǒng)上解壓并運轉(zhuǎn)的,因此主機(jī)必需提供這種文件傳輸效力。Tftp是一種簡單的文件傳輸協(xié)議,多用于嵌入系統(tǒng)運用中,因此主機(jī)需求配置tftp效力,供下載內(nèi)

18、核時運用 2.3 配置主機(jī)效力修正配置參數(shù)在主機(jī)上創(chuàng)建/tftpboot目錄,以供存放內(nèi)核重新啟動tftp效力 為防止每次啟動主機(jī)都要手工啟動tftp效力,運用命令使得tftp效力在每次系統(tǒng)啟動時都默許執(zhí)行 2.3 配置主機(jī)效力2.3.4 配置NFS網(wǎng)絡(luò)文件系統(tǒng)NFS是一種在網(wǎng)絡(luò)上的機(jī)器間共享文件的方法,在開發(fā)的過程中,目的系統(tǒng)沒有足夠的本地存儲設(shè)備供運用,它可以經(jīng)過主機(jī)提供的NFS效力,運用在主機(jī)上的文件系統(tǒng),就好像位于本地硬盤驅(qū)動器上一樣 2.3 配置主機(jī)效力修正NFS配置文件 留意:上面格式表示,同一共享目錄提供應(yīng)兩個不同的主機(jī),但提供應(yīng)這兩臺主機(jī)的權(quán)限和參數(shù)可以是不同的??梢栽O(shè)定的參數(shù)主要有以下幾種:2.3 配置主機(jī)

溫馨提示

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

最新文檔

評論

0/150

提交評論