搭建Linux交叉編譯開發環境ppt課件_第1頁
搭建Linux交叉編譯開發環境ppt課件_第2頁
搭建Linux交叉編譯開發環境ppt課件_第3頁
搭建Linux交叉編譯開發環境ppt課件_第4頁
搭建Linux交叉編譯開發環境ppt課件_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

2、otstrap gcc;建立c庫(glibc);建立全套編譯器full gcc。 2.2 建立交叉編譯開發工具鏈需求:下載源文件、補丁和建立編譯的目錄 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 建立交叉編譯開發工具鏈建立整個tool chain的步驟2.2 建立交叉編譯開發工具鏈(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 建立交叉編譯開發工具鏈留意:這樣就在/opt/host/armv5/bin下產生了binutils,它們的作用如下:ad

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

5、索引存入存檔文件中。readelf顯示elf格式的目的文件的信息。size顯示目的文件各個節的大小和目的文件的大小。strings打印出目的文件中可以打印的字符串,有個默許的長度,為4。strip剝掉目的文件的一切的符號信息。2.2 建立交叉編譯開發工具鏈2輸出工具的途徑,使得以后的編譯任務能看到這些工具:# export PATH=/opt/host/armv5/bin:$PATH2.2 建立交叉編譯開發工具鏈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 建立交叉編譯開發工具鏈# 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內核系統的頭文件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 的源碼轉化為 K&R C 的方式,去掉函數原型中的參數類型。cppgnu的 C 的預編譯器。gcovgcc 的輔助測試工具,可以用它來分析和優化程序。2.2 建立交叉編譯開發工具鏈建立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 建立交叉編譯開發工具鏈# 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 建立交叉編譯開發工具鏈留意:glibc主要是程序運轉所需求的庫函數的集合,包括輸入輸出,數學,io控制等等2.2 建立交叉編譯開發工具鏈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 建立交叉編譯開發工

12、具鏈留意:g+gnu的 c+ 編譯器。protoize與unprotoize相反,將K&R C的源碼轉化為ANSI C的方式,函數原型中參與參數類型。c+gnu的c+編譯器。2.2 建立交叉編譯開發工具鏈2.2.2 下載工具鏈這里主要引見一下Denx公司發布的一整套開放源碼的嵌入式Linux開發工具鏈ELDKEmbedded Linux Development Kit ELDK可以安裝和運轉在以下主機環境中: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 建立交叉編譯開發工具鏈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 建立交叉編譯開發工具鏈ELDK包括了一個安裝工具和許多RPM包,他們可以安裝到用戶的交叉編譯的主機的硬盤中。ELDK的RPM包可以分為2種:嵌入式Linux開發工具;為目的處置器編譯好的工具和元件。其中,第一部分包括執行在開發主機上的交叉編譯工具,有GNU交叉編譯器GCC

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

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

16、機效力2.3.2 配置DHCPDHCP是動態主機配置協議。這個協議用于向計算機自動提供IP地址,子網掩碼和路由信息。在開發的過程中,目的系統并沒有本人的靜態IP地址,它是在啟動時向DHCP效力器懇求,因此需求在主機上配置DHCP效力,以便在目的系統懇求IP時,動態為它分配IP地址。 DHCP效力的配置文件為/etc/dhcpd.conf,經過修正該文件進展配置。etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。 2.3 配置主機效力(1)DHCP配置文件中的parameters參數:闡明如何執行義務,能否要執行義務,或將哪些網絡配置選項

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

18、核時運用 2.3 配置主機效力修正配置參數在主機上創建/tftpboot目錄,以供存放內核重新啟動tftp效力 為防止每次啟動主機都要手工啟動tftp效力,運用命令使得tftp效力在每次系統啟動時都默許執行 2.3 配置主機效力2.3.4 配置NFS網絡文件系統NFS是一種在網絡上的機器間共享文件的方法,在開發的過程中,目的系統沒有足夠的本地存儲設備供運用,它可以經過主機提供的NFS效力,運用在主機上的文件系統,就好像位于本地硬盤驅動器上一樣 2.3 配置主機效力修正NFS配置文件 留意:上面格式表示,同一共享目錄提供應兩個不同的主機,但提供應這兩臺主機的權限和參數可以是不同的。可以設定的參數主要有以下幾種:2.3 配置主機

溫馨提示

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

評論

0/150

提交評論