新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在CentOS下用cross-ng建立arm-linux交叉編譯環(huán)境

        在CentOS下用cross-ng建立arm-linux交叉編譯環(huán)境

        作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
        網(wǎng)上很多都是在Ubuntu下用cross-ng建立arm-linux交叉編譯工具的文章,而CentOS下卻很難尋覓。在這里記錄了自己的建造過程,以供廣大網(wǎng)友參閱。

        一、配置環(huán)境

        本文引用地址:http://www.104case.com/article/201611/319393.htm

        1、操作系統(tǒng):CentOS5.5

        2、源代碼包:crosstool-ng-1.9.0.tar.bz2

        二、安裝crosstool-ng依賴軟件包

        libncurses5-dev

        bison

        flex

        texinfo

        libtool

        patch

        lzma

        cvs

        gawk

        glibc-static

        gcc-java

        gcc-c++

        #在CentOS Shell下,使用命令 $yum install xxx 依次安裝。

        cvsd #手動安裝

        temcap #手動安裝

        • tar zxvf termcap-1.3.1.tar.gz
        • cd termcap-1.3.1
        • ./configure --prefix=/usr
        • make
        • make install

        autoconf#手動安裝

        #autoconf安裝成功之后,再來安裝automake

        • tar -jxvf autoconf-2.66.tar.bz2
        • cd autoconf-2.66
        • ./configure
        • make
        • make install

        automake#手動安裝

        #注意:CentOS5.5下的automake版本太低,需要 1.10或以上版本

        • tar -jxvf automake-1.10.2.tar.bz2
        • cd automake-1.10.2
        • ./configure
        • make
        • mak install

        三、配置、編譯和安裝

        • mkdir ~/crosstool
        • cd ~/crosstool
        • mkdir src
        • binutils-2.19.1.tar.bz2
          glibc-2.9.tar.gz
          dmalloc-5.5.2.tgz
          glibc-ports-2.9.tar.bz2
          mpfr-2.4.2.tar.bz2
          duma_2_5_15.tar.gz
          gmp-4.3.3.tar.bz2
          ncurses-5.7.tar.gz
          ecj-latest.jar
          libelf-0.8.13.tar.gz
          busybox.net/index.py/trunk/buildroot/toolchain/sstrip//sstrip.c?view=co%27" target="_blank">sstrip.c
          gcc-4.3.2.tar.bz2
          linux-2.6.33.7.tar.bz2
          strace-4.5.19.tar.bz2
          gdb-6.8.tar.bz2
          ltrace_0.5.3.orig.tar.gz
          cp xxx ./src #下載并拷貝以上代碼包到~/crosstool/src
        • cp ~/crosstool-ng-1.9.0.tar.bz2 ./
        • mkdir crosstool-build#編譯新交叉編譯器的工作目錄
        • mkdir crosstool-install #安裝目錄
        • tar xjvf crosstool-ng-1.9.0.tar.bz2 #解壓文件
        • cd crosstool-ng-1.9.0
        • patch -p1 < <補(bǔ)丁文件> #給crosstool-ng打補(bǔ)丁(如果有)
        • ./configure --prefix=~/crosstool/crosstool-install #配置crosstool-ng
        • make#編譯crosstool-ng
        • make install #安裝crosstool-ng
        • echo "PATH=$PATH:~/crosstool/tools/bin" >> ~/.bashrc # 為后面調(diào)用ct-ng命令增加環(huán)境變量
        • $ source ~/.bashrc

        四、配置交叉編譯工具

        • cd ~/crosstool/crosstool-build/
        • cp ../crosstool-ng-1.9.0/samples/arm-unknown-linux-gnueabi /* ./#拷貝默認(rèn)配置文件到工作目錄
        • mv crosstool.config .config#修改文件名
        • ../crosstool-install/bin/ct-ng menuconfig

        此時會出現(xiàn)crosstool-ng的配置窗口,針對armv4t體系架構(gòu),開始對其進(jìn)行修改配置:

        1、已下載好的源碼包路徑和交叉編譯器的安裝路徑。

        Paths and misc options --->

        (/home/centos/crosstool/src) Local tarballs directory #保存源代碼包路徑

        (/home/centos/crosstool/tools) Prefix directory#交叉編譯器的安裝路徑

        2、修改交叉編譯器針對的構(gòu)架。
        Target options --->
        *** Target optimisations ***
        (armv4t) Architecture level
        (arm9tdmi) Emit assembly for CPU
        (arm920t) Tune for CPU

        3、增加編譯時的并行進(jìn)程數(shù),以增加運(yùn)行效率,加快編譯。
        Paths and misc options --->
        *** Build behavior ***
        (4) Number of parallel jobs

        #數(shù)值不宜過大,應(yīng)該為CPU數(shù)量的兩倍。由于我的CPU是雙核的,所以我填了4

        4、關(guān)閉java編譯器,避免gcj出錯
        C compiler --->
        *** Additional supported languages: ***
        [N] Java

        5、一些個性化的設(shè)置
        Toolchain options --->
        *** Tuple completion and aliasing ***
        (centos) Tuples vendor string #產(chǎn)生的編譯器前綴:arm-centos-linux-gnueabi-
        #這個前綴太長,crosstool-ng可以在配置的時候設(shè)置別名
        Toolchain options --->
        *** Tuple completion and aliasing ***
        (arm-linux) Tuples alias
        #這里設(shè)置別名為arm-linux,這樣以后通過arm-linux-gcc就可以調(diào)用arm-centos-linux-gnueabi-gcc了

        C compiler --->
        (crosstool-NG-${CT_VERSION}-centos) gcc ID string
        #接下來保存就可以了

        五、為加快速度,根據(jù)配置自行下載相應(yīng)的軟件包

        注意:雖然crosstool-ng自動下載相應(yīng)軟件包,但是速度比較慢。我們不防在執(zhí)行ct-ng build命令之前,把相應(yīng)的軟件包預(yù)先下載好,拷貝到配置時指定的文件夾,這里是~/crosstool/src。查看crosstool-build目錄下“.config”文件就可知道需要哪些軟件包及其版本
        六、編譯工具鏈

        ../crosstool-install/bin/ct-ng build

        #接下來,就是漫長的等待。crosstool-ng會自動下載相應(yīng)的包,內(nèi)核文件,然后解壓,配置,編譯,鏈接

        七、編譯好后的交叉編譯器
        編譯器位于:${你配置時確定的路徑}/arm-centos-linux-gnueabi/bin
        庫文件位于:${你配置時確定的路徑}/arm-centos-linux-gnueabi/arm-centos-linux-gnueabi/lib

        八、測試一下編譯是否成功:
        $ arm-centos-linux-gnueabi-gcc -v




        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 保定市| 巩留县| 翁源县| 秀山| 佛学| 万山特区| 武陟县| 邯郸市| 于都县| 砚山县| 蓝田县| 兴和县| 卫辉市| 沂南县| 金沙县| 松潘县| 牟定县| 临澧县| 陇西县| 炉霍县| 临泉县| 东至县| 右玉县| 高台县| 祁阳县| 柘荣县| 准格尔旗| 于田县| 儋州市| 交口县| 贡觉县| 达拉特旗| 富平县| 包头市| 安仁县| 丰都县| 锡林郭勒盟| 太和县| 鹤壁市| 贵溪市| 十堰市|