成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡易介紹Linux ARM系統交叉編譯在Fedora 下建立

系統 Linux
這幾天忙著在Fedora 7下建立Linux ARM的交叉編譯環境。一開始參考了《構建嵌入式Linux系統》,這是一本很經典的書。上面介紹了建立Linux ARM的交叉編譯環境的許多知識,建立的原則和方法。

給大家推薦一款很不錯的Linux ARM系統很有學習價值,這里我主要講解Linux ARM系統的應用,包括介紹Linux ARM知識等方面。在 Fedora 下建立 Linux ARM交叉編譯環境。

這幾天忙著在Fedora 7下建立Linux ARM的交叉編譯環境。一開始參考了《構建嵌入式Linux系統》,這是一本很經典的書。上面介紹了建立Linux ARM的交叉編譯環境的許多知識,建立的原則和方法。我一開始想按照上面的一般方法,建立一個自己的、最新的交叉編譯環境。但是,試了才知道這個過程是一個繁瑣、耗時的工作。對于沒有編譯原理知識的我來說,更是耗時又毫無意義。引用《嵌入式設計及Linux驅動程序開發指南——基于ARM9處理器(第2版)》的原話:“在這項工作上浪費時間似乎沒有任何意義,我也是這么認為的,”。 由于在公司做事,時間不多,最后,我利用crosstool-0.43,自動完成了這項工作。在是否有必要自己建立交叉編譯環境的問題上,我建議:如果你是一個學生,建議你認真學習編譯原理、Linux和GNU的編譯器原理,再一步一步的自己建立交叉編譯環境(學生比較有時間,少泡MM,少玩游戲,時間就擠出來了。好好學習,以后MM來泡你,別人玩你編的游戲。如果你是程序員(不是交叉編譯器的開發者),建議不要在這上面浪費時間了,賺錢要緊,把這個作為業余愛好吧!

這次建立 交叉編譯環境我主要參考的資料是:
1、《構建嵌入式Linux系統》
2、《嵌入式設計及Linux驅動程序開發指南——基于Linux ARM處理器(第2版)》
3、《 Linux ARM交叉編譯 工具鏈 制作攻略 》
4、《 AT91RM9200引導程序的建立--------建立交叉編譯工具鏈 》

Host CPU:i686
RAM: 768MB
OS: Fedora 7
TARGET CPU :ARM9TDMI
OS : Linux-2.6.22.2/2.6.15.4

我在Fedora7下快速、成功地建立Linux ARM交叉編譯環境,是看了《嵌入式設計及Linux驅動程序開發指南——基于Linux ARM9處理器(第2版)》 中關于crosstool的介紹。crosstool是由美國人Dan Kegel(畢業于加(利福尼亞)州工學院)開發的一套可以自動編譯不同匹配版本gcc和glibc,并作測試的腳本程序。寫這篇文章時的最新版本是0.43。

在http://kegel.com/crosstool/crosstool-0.43/buildlogs/ 可以看到各種CPU和GCC+Glibc版本那些已經編譯成功,那些部分成功,那些徹底失敗。如果你不是編譯器開發者,就按著上面做吧。你也可以到http://kegel.com/crosstool/#download 看看是否有更新的版本。

第一步:保證你裝Fedora7時,安裝了需要的軟件開發工具。在《 Linux ARM交叉編譯 工具鏈 制作攻略 》中說:“0、制作之前確保你的機子上有如下幾個工具:bison、flex、build-essential。 ”    我的機子上有bison和flex, 至于build-essential是包含一個在建立deb包過程中起關鍵作用的包的信息列表,Fedora下并不需要。

第二步:下載crosstool,并解壓到你的工作目錄。    tar -xzvf crosstool-0.43.tar.gz cd crosstool-0.43

第三步:察看crosstool文件夾中,可以看到目錄下有很多 .sh 腳本和 .dat 配置文件。找到 你要交叉編譯的CPU 所對應的腳本,如我要交叉編譯的CPU是S3C2410A,則選用 demo-arm9tdmi.sh 。以下是其內容和所需的修改: #!/bin/sh
# This script has one line for each known working toolchain
# for this architecture. Uncomment the one you want.
# Generated by generate-demo.pl from buildlogs/all.dats.txt
set -ex

TARBALLS_DIR= /home/tekkaman/working/source RESULT_TOP= /home/tekkaman/working/crosstool這兩行是需要修改的參數,TARBALLS_DIR是下載的工具源碼壓縮包的存放目錄。RESULT_TOP是要生成的工具鏈的存放目錄,一定要改到有寫權限的目錄,不然無法編譯。如用root登錄進行編譯,可能 會出錯,詳情請見后記!以上是我的修改,他人可以根據實際情況修改。

export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES= "c,c++"
export GCC_LANGUAGES
# Really, you should do the mkdir before running this ,
# and chown / opt/ crosstool to yourself so you don 't need to run as root.
mkdir -p $RESULT_TOP

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest 
上面表示要選工具鏈的版本號!"#"起注釋功能!可以選擇一行!這行是默認的工具鏈的版本號(最新的),我就是用這一行,也可以選別的。 echo Done. 

第三步(可選):根據你所選的工具鏈的版本號,打開相應的.dat文件,察看所需的源碼包,并下載到 ${TARBALLS _DIR} 目錄中 。 

例如:我在demo-arm9tdmi.sh 中 選的是eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest  ,那么我就打開 arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat ,其內容如下:
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.0
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.15.4 
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
GDB_DIR=gdb-6.5
GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread  --enable-kernel=2.4.18" 

到網上去下載紅色標記的.bz2 源碼包 ,注意其版本號 ,下載后存放到${TARBALLS_DIR} 目錄下。注意:不要解壓!

根據《構建嵌入式Linux系統》 中的介紹,如果為不同的內核編譯交叉編譯工具,交叉編譯工具要根據其內核重新編譯過。由于我想使用最新的2.6.22.2 內核,所以在編譯完以上配置的工具鏈后,我將“LINUX_DIR=linux-2.6.15.4  ”改成“LINUX_DIR=linux-2.6.22.2  ”,并下載linux-2.6.22.2.tar.bz2 到${TARBALLS_DIR} 目錄下, 重新編譯了一次。

最后一步: 進入crosstool-0.43目錄,輸入./demo-arm9tdmi.sh ,然后就是泡茶、看書。經過不到3小時的編譯(公司的爛電腦所用的時間,配置好的可以更快),就可以在${RESULT_TOP } 目錄中看到想要的工具鏈、頭文件、庫文件等文件了, 在 ${RESULT_TOP }/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/tmp 文件夾中有 Hello,world!測試程序 。一般不會失敗, 我編了2.6.15.4內核和2.6.22.2內核都順利結束,且移植U-boot1.2.0、Linux2.6.22.2、busybox1.9.0和其他的驅動或應用程序都十分順利,從沒出過錯!下載到S3c2410和S3c2440的開發板上(2.6.22.2內核)測試,都沒問題。證明編譯出的程序 絕對可用。

【編輯推薦】

  1. 建立Linux SVN倉庫文件與安裝及配置
  2. 虛擬機VMware Tools for Linux綠色精簡版
  3. Linux內核系統編譯安裝RTAI
  4. Linux 2.6內核編譯與配置安裝升級
  5. Linux升級系統從Fedora 10升級到Fedora 12
責任編輯:佚名 來源: CSDN
相關推薦

2010-02-24 16:49:24

Fedora SkyE

2009-12-07 09:57:06

Fedora/內核編譯

2010-02-25 18:09:41

Linux系統軟件

2015-11-11 15:19:13

Linux編譯調試

2011-06-23 18:16:59

Qt Qtopia

2011-06-23 18:04:42

Qt Embedded

2011-06-23 16:24:21

Qt Embedded 交叉編譯

2010-03-12 10:20:19

Fedora內核

2009-12-24 17:06:35

編譯Fedora內核

2010-02-02 17:57:47

Linux PPStr

2011-06-28 13:47:37

Embedded QT ARM

2022-12-03 16:02:51

2009-12-22 16:29:10

Fedora Core

2010-03-15 14:24:09

Python字典

2009-12-21 10:55:29

Fedora 7 li

2010-02-25 10:46:44

Linux操作系統

2009-12-23 19:13:40

Fedora Linu

2009-12-22 15:58:08

2011-04-22 14:59:14

RedHat編譯器

2009-04-28 19:42:44

Linux系統FTP搜索
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久亚洲调教 | 天天看片天天干 | 久久久91精品国产一区二区三区 | 国产激情一区二区三区 | 久久久国产一区 | 这里精品 | 美国黄色毛片 | 国产日韩欧美 | 日本三级网址 | 91麻豆精品国产91久久久久久久久 | 一本在线 | 久久精品久久久 | 国产成人精品久久久 | 欧美一级片免费看 | 精久久久久 | 欧美一a一片一级一片 | 欧美成人一区二区三区 | 国产永久免费 | 亚洲高清免费 | 无码日韩精品一区二区免费 | 99re6热在线精品视频播放 | 久久久精品一区 | 日韩手机在线视频 | 一区二区三区av | 在线中文视频 | a久久 | 欧美成人激情视频 | 国产精品污www一区二区三区 | 亚洲精品1| 欧美日韩福利视频 | 午夜看电影在线观看 | 久久中文免费视频 | 亚洲一区视频在线 | 在线观看成年视频 | 成人国产午夜在线观看 | 亚洲一区二区三区四区五区午夜 | 国产精品福利久久久 | 在线91 | www成人啪啪18 | 久久毛片| 日韩在线视频播放 |