第4章 構(gòu)建嵌入式Linux系統(tǒng).ppt_第1頁
第4章 構(gòu)建嵌入式Linux系統(tǒng).ppt_第2頁
第4章 構(gòu)建嵌入式Linux系統(tǒng).ppt_第3頁
第4章 構(gòu)建嵌入式Linux系統(tǒng).ppt_第4頁
第4章 構(gòu)建嵌入式Linux系統(tǒng).ppt_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、構(gòu)建嵌入式Linux編譯環(huán)境,2,什么是交叉編譯?,在嵌入式開發(fā)中經(jīng)常會提到交叉編譯的概念,那么究竟什么是交叉編譯呢? 交叉編譯就是,在一種體系結(jié)構(gòu)下的機器上編譯出能夠在另外一種體系結(jié)構(gòu)下運行的應用程序的編譯過程,3,交叉編譯器從何而來?,交叉編譯器是通過編譯一系列GNU工具及庫文件得到的,這些工具包括: Binutils: GNU的一個工具包,其中包括匯編器、連接器、歸檔器等等一系列工具 Gcc:主要提供C語言編譯器,同時還支持其它多種語言 Glibc:提供標準的C/C+庫 Kernel include files:為建立bootstrap gcc提供內(nèi)核頭文件,4,構(gòu)建編譯環(huán)境的整體流程,

2、5,構(gòu)建步驟,下載Binutils、gcc、glibc以及內(nèi)核源代碼,和針對該版本的補丁 通過本機上的gcc編譯Binutils,生成匯編器、連接器等編譯工具 編譯gcc源碼生成bootstrap gcc,用來編譯glibc 使用bootstrap gcc結(jié)合glibc和內(nèi)核源碼,便以生成glibc的標準c庫 再次編譯gcc源碼,生成完整的gcc編譯器,包含g+編譯器,6,詳細步驟(一),下載Binutils、gcc、glibc、內(nèi)核源代碼及相關版本的補丁 所有的GNU工具都可以到GNU的官方網(wǎng)站上下載 內(nèi)核源代碼下載地址 http:/www.kernel.

3、org/ 針對ARM體系機構(gòu)的補丁 .uk/,7,詳細步驟(二),建立工作目錄 為了使我們的編譯結(jié)果更清晰,更規(guī)范,我們就必須建立一列的工作目錄,$pwd /home/liang $mkdir embedded $cd embedded $mkdir build-tools kernel tools $ls build-tools kernel tools,總的工作目錄,編譯工具目錄,內(nèi)核源碼目錄,生成工具鏈目錄,8,詳細步驟(二),聲明環(huán)境變量,$export PRJROOT=/home/zxt/embedded $export TARGET=a

4、rm-linux $export PREFIX=$PRJROOT/tools $export TARGET_PREFIX=$PREFIX/$TARGET $export PATH=$PREFIX/bin:$PATH,9,詳細步驟(二),建立build-tools下子目錄 為了把源碼和編譯時生成的文件分開,一般的編譯工作不在的源碼目錄中,要另建一個目錄來專門用于編譯,$cd $PRJROOT/build-tools $mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch,編譯binutils的目錄,編譯bootst

5、rap gcc的目錄,編譯全部gcc的目錄,編譯glibc的目錄,gcc補丁,10,詳細步驟(二),將各個工具包的源代碼放置在build-tools 目錄下 解壓縮各個工具包,$ls binutils-2.10.1.tar.bz2 build-gcc gcc-patch build-binutls build-glibc glibc-2.2.3.tar.gz build-boot-gcc gcc-2.95.3.tar.gz glibc-linuxthreads-2.2.3.tar.gz,11,詳細步驟(三),配置內(nèi)核并生成內(nèi)核頭文件 對內(nèi)核源碼下include目錄進行修改,$cd includ

6、e $ln -s asm-arm asm $cd asm $rm arch proc $ln -s arch-s3c2410 arch $ln -s proc-armv proc,For 32bit ARM,針對不同的平臺使用不同的arch,12,詳細步驟(三),配置內(nèi)核生成頭文件 生成所需的內(nèi)核頭文件,$make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig,體系結(jié)構(gòu),交叉編譯工具,include/linux/version.h include/linux/autoconf.h,13,詳細步驟(三),安裝內(nèi)核頭文件到$TARGET_PREFIX目錄

7、下,$mkdir -p $TARGET_PREFIX/include $cp -r $PRJROOT/kernel/linux-2.4.21/include/linux $TARGET_PREFIX/include $cp -r $PRJROOT/kernel/linux-2.4.21/include/asm-arm $TARGET_PREFIX/include/asm,14,詳細步驟(四),編譯并安裝Binutils,15,16,詳細步驟(五),修改 gcc配置內(nèi)容 修改gcc-2.95.3源碼中gcc/config/arm/t-linux文件的配置內(nèi)容。 修改TARGET_LIBGCC2-

8、CFLAGS = -fomit-frame-pointer -fPIC配置內(nèi)容為:,TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D_gthr_posix_h,17,詳細步驟(五),編譯并安裝bootstrap gcc,$cd build-boot-gcc $./gcc-2.95.3/configure -target=$TARGET -prefix=$PREFIX -without-headers -enable-languages=c -disable-threads $make all-gcc $ma

9、ke install-gcc,現(xiàn)在還沒有glibc頭文件,只支持C語言,去掉thread功能,因為需要glibc的支持,18,19,詳細步驟(六),建立glibc庫 為glibc打補丁,$cd $PRJROOT/build-tools $tar -xvzf glibc-2.2.3.tar.gz $tar -xzvf glibc-linuxthreads-2.2.3.tar.gz -directory=glibc-2.2.3,為glibc打上thread補丁,20,詳細步驟(六),配置glibc,$cd build-glibc $CC=arm-linux-gcc ./glibc-2.2.3/co

10、nfigure -host=$TARGET -prefix=/usr -enable-add-ons -with-headers=$TARGET_PREFIX/include,指定使用bootstrap gcc,使用thread包,指定內(nèi)核頭文件位置,$make $make install_root=$TARGET_PREFIX prefix= install,21,詳細步驟(六),修改$TARGET_PREFIX/lib 目錄下的libc.so 修改前 修改后 原因 這樣修改以后鏈接器ld就會在libc.so目錄下搜索它所需要的庫,GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a),GROUP ( libc.so.6 libc_nonshared.a),22,23,詳細步驟(七),建立完整的gcc,$cd $PRJROOT/build-to

溫馨提示

  • 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

提交評論