久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久


嵌入式培訓資料:搭建交叉編譯環境

分(fen)享到:
           

    搭建交(jiao)叉(cha)(cha)編(bian)(bian)譯(yi)(yi)環境是嵌入式(shi)開(kai)發的(de)(de)(de)第一步,也是關(guan)鍵的(de)(de)(de)一步。不(bu)(bu)同(tong)的(de)(de)(de)體系(xi)結構、不(bu)(bu)同(tong)的(de)(de)(de)操作內容甚至是不(bu)(bu)同(tong)版(ban)本的(de)(de)(de)內核,都會(hui)用(yong)到不(bu)(bu)同(tong)的(de)(de)(de)交(jiao)叉(cha)(cha)編(bian)(bian)譯(yi)(yi)器(qi)(qi)。選擇交(jiao)叉(cha)(cha)編(bian)(bian)譯(yi)(yi)器(qi)(qi)非(fei)常重要,有些交(jiao)叉(cha)(cha)編(bian)(bian)譯(yi)(yi)器(qi)(qi)經常會(hui)有部分(fen)的(de)(de)(de)BUG,都會(hui)導致后的(de)(de)(de)代碼無法(fa)正常運(yun)行。

    交(jiao)叉編(bian)(bian)譯(yi)器(qi)完整(zheng)的安裝(zhuang)一般涉及到多個軟件(jian)的安裝(zhuang)(讀者可(ke)(ke)以從(cong)ftp://gcc.gnu.org/pub/下載(zai)),包括binutils、gcc、glibc、glibc-linuxthreads等軟件(jian)。其中,binutils主要(yao)用(yong)于生成(cheng)一些(xie)輔助工(gong)具,如readelf、objcopy、objdump、as、ld等;gcc是(shi)用(yong)來(lai)生成(cheng)交(jiao)叉編(bian)(bian)譯(yi)器(qi)的,主要(yao)生成(cheng)arm-linux-gcc交(jiao)叉編(bian)(bian)譯(yi)工(gong)具(應該說(shuo),生成(cheng)此工(gong)具后已經搭建起了(le)交(jiao)叉編(bian)(bian)譯(yi)環(huan)境,可(ke)(ke)以編(bian)(bian)譯(yi)Linux內核了(le),但由于沒有提供(gong)標準用(yong)戶(hu)函數(shu)庫,用(yong)戶(hu)程(cheng)序(xu)還無法(fa)編(bian)(bian)譯(yi));glibc主要(yao)是(shi)提供(gong)用(yong)戶(hu)程(cheng)序(xu)所使用(yong)的一些(xie)基本的函數(shu)庫,glibc-linuxthreads是(shi)線程(cheng)相(xiang)關(guan)函數(shu)庫。這樣,交(jiao)叉編(bian)(bian)譯(yi)環(huan)境就完全(quan)搭建起來(lai)了(le)。

    上面所述的搭(da)建(jian)交叉(cha)編譯環境(jing)比較復雜,很多(duo)步驟(zou)都涉(she)及到(dao)對硬件平(ping)(ping)臺的選(xuan)擇。因(yin)此(ci),現在嵌入(ru)式(shi)(shi)平(ping)(ping)臺社區或(huo)廠(chang)商一(yi)般會提(ti)供在各種平(ping)(ping)臺上測試(shi)通過的交叉(cha)編譯器(qi),而且也(ye)有(you)很多(duo)把(ba)以(yi)上安裝步驟(zou)全部(bu)寫入(ru)腳本文(wen)件或(huo)者以(yi)發(fa)行包的形式(shi)(shi)提(ti)供,這樣就大(da)大(da)方便了用戶的使用。例如,crosstool是美國(guo)人Dan Kegel開發(fa)的一(yi)套可以(yi)自動編譯不同(tong)版本的交叉(cha)編譯器(qi),關(guan)于(yu)該工(gong)具的使用請參考同(tong)一(yi)系(xi)列(lie)的教材(cai)“嵌入(ru)式(shi)(shi)系(xi)統技術與設計(ji)”。

    在本文中采用廣泛使用的(de)cross-3.3.2交叉編譯(yi)器工具鏈,其使用非常簡(jian)單。

    $ mkdir –p /usr/local/arm /* 這是交叉編譯器安裝目錄*/
    $ cp cross-3.3.2.bar.bz2 /usr/local/arm
    $ cd /usr/local/arm
    $ tar jxvf cross-3.3.2.tar.gz

    此時在/usr/local/arm/3.3.2/bin/下(xia)(xia)已經出現了很多交叉編譯工具。用戶可以(yi)查看arm文件(jian)(jian)夾下(xia)(xia)的VERSIONS文件(jian)(jian),顯示如下(xia)(xia):

    Versions
    gcc-3.3.2
    glibc-2.3.2
    binutils-head
    Tool chain binutils configuration:
    ../binutils-head/configure …
    Tool chain glibc configuration:
    ../glibc-2.3.2/configure …
    Tool chain gcc configuration
    ../gcc-3.3.2/configure …

    可(ke)以(yi)看到(dao),這個(ge)(ge)交叉編譯工具確實集成(cheng)了(le)binutils、gcc、glibc這幾(ji)個(ge)(ge)軟(ruan)件(jian),而每個(ge)(ge)軟(ruan)件(jian)也都有比較(jiao)復(fu)雜的配置信息,讀者可(ke)以(yi)查看VERSIONS文件(jian)了(le)解(jie)相(xiang)關信息。

    接(jie)下來,在(zai)環境變量(liang)PATH中添加(jia)路徑(jing),就可以直接(jie)使用arm-Linux-gcc命令(ling)了。

    $ export PATH=$PATH:/usr/local/arm/3.3.2/bin

    把交叉開發工(gong)具鏈的路徑添加到(dao)環境(jing)變量PATH中,這樣可以方(fang)便地在Bash或者Makefile中使用這些工(gong)具。通(tong)常可以在環境(jing)變量的配置(zhi)文件有幾個:

    (1)profile類(lei)(lei)文(wen)(wen)件(jian)(jian)(jian):用(yong)戶(hu)登錄(lu)(lu)(lu)時第一次(ci)僅運行一次(ci),profile類(lei)(lei)文(wen)(wen)件(jian)(jian)(jian)包括每(mei)個用(yong)戶(hu)主目(mu)錄(lu)(lu)(lu)下的.profile文(wen)(wen)件(jian)(jian)(jian)和/etc/profile等。哪個用(yong)戶(hu)登錄(lu)(lu)(lu)就(jiu)會運行主目(mu)錄(lu)(lu)(lu)下的.profile文(wen)(wen)件(jian)(jian)(jian)的腳本(ben)。

    (2)bashrc類文(wen)件(jian):每當打開bash shell時(例(li)如(ru),當打開一個虛擬終端時)運行(xing)改腳本文(wen)件(jian)。bash類文(wen)件(jian)包括每個用戶主目(mu)錄下的.bashrc文(wen)件(jian)和/etc/bash.bashrc等。

    把環(huan)境(jing)變量配置(zhi)的命(ming)令添加(jia)到其中一個文件中即可。

    $ arm-linux-gcc –v /*查看交叉編譯器的版本信息*/
    Reading specs from /usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/ specs Configured
    with: ../gcc-3.3.2/configure
    --target=arm-linux --with-cpu=strongarm1100
    --prefix=/usr/local/arm/3.3.2
    i686-pc-linux-gnu --with-headers=/work/kernel.h3900/include
    --enable-threads=pthreads --enable-shared --enable-static --enable-languages=c,c++
    Thread model: posix
    gcc version 3.3.2

    從上面(mian)打(da)印的(de)(de)版本信息中可以(yi)看到“--prefix=/usr/local/arm/3.3.2”,這就是交(jiao)叉編譯器安裝的(de)(de)路徑。它是在編譯前通過prefix選(xuan)項配置的(de)(de)。所以(yi),這個工具鏈(lian)安裝的(de)(de)路徑必(bi)須是/usr/local/arm/3.3.2。


   熱點鏈接:

   1、什么是嵌入式系統
   2、嵌入式系統的硬件架構
   3、嵌入式Linux開發學習
   4、六種常見嵌入式操作系統
   5、嵌入式linux入門要學什么

更多新聞>>