在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 建立ARM Linux交叉編譯環(huán)境

            建立ARM Linux交叉編譯環(huán)境

            作者: 時間:2016-11-09 來源:網(wǎng)絡 收藏
            首先需要一臺運行Linux操作系統(tǒng)的PC以完成我們的編譯工作。
            其次要準備如下一些源文件。
            1、源文件準備
            binutils-2.14.tar.gz
            [url]ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz[/url]
            gcc-core-2.95.3.tar.gz
            [url]ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz[/url]
            gcc-g++2.95.3.tar.gz
            [url]ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz[/url]
            glibc-2.2.4.tar.gz
            [url]ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz[/url]
            glibc-linuxthreads-2.2.4.tar.gz
            [url]ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz[/url]
            linux-2.4.21.tar.gz
            [url]ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz[/url]
            patch-2.4.21-rmk1.gz # linux kernel patch for arm
            [url]ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz[/url]
            binutils-2.14.tar.gz這個壓縮包包含有l(wèi)d,ar,as等一些產(chǎn)生或者處理二進制文件的工具。
            gcc-core-2.95.3.tar.gz這個壓縮包是GCC的主體部分,GCC是GNU Compiler Collection的簡稱,顧名思義,它能夠編譯很多種高級語言,例如C、C++,Java等,而這個壓縮包中含有C編譯器,及公共部分,而對其他語言的支持,采用另外的壓縮包單獨發(fā)布。
            gcc-g++2.95.3.tar.gz,這個壓縮包就是為使GCC能夠編譯C++程序而單獨發(fā)布的。
            glibc-2.2.4.tar.gz,libc是很多用戶層應用都要用到的庫,kernel和bootloader不需要這個庫的支持,這個庫主體部分封裝在這個壓縮包內(nèi)。
            glibc-linuxthreads-2.2.4.tar.gz,這是Libc用于支持Posix線程而單獨發(fā)布的一個壓縮包。
            linux-2.4.21.tar.gz,這個壓縮包就是Linux的內(nèi)核。
            patch-2.4.21-rmk1.gz,這個壓縮包是用來給Linux內(nèi)核打補丁,以使其可以支持ARM的硬件平臺。
            2、工作目錄搭建
            我們創(chuàng)建如下的目錄樹結構
            mkdir arm
            mkdir tool-chain
            mkdir build-dir
            mkdir src-dir
            mkdir setup-dir
            mkdir kernel
            arm這個目錄是我們的最頂層工作目錄,我們所有的編譯工作都在這里完成。
            tool-chain這個目錄是我們交叉編譯工具的安裝位置,它下面的bin子目錄存放我們創(chuàng)建好的編譯器,匯編器,連接器,以及編譯好的C庫也會安裝到這個目錄之下。
            setup-dir這個目錄用來存放我們下載的壓縮包。
            src-dir這個目錄用于存放binutils,gcc,glibc解壓之后的源文件。
            kernel這個目錄用來存放內(nèi)核文件,對內(nèi)核的配置、編譯工作將在這個目錄中完成。
            build-dir用來編譯src-dir中的源文件,具體就是binutils,gcc,glibc的編譯工作將在這個目錄下完成。這種源文件目錄和編譯目錄分離的編譯方式是GNU所推薦的。
            cd ./src-dir
            tar –xvzf ../setup-dir/ binutils-2.14.tar.gz
            tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz
            tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz
            tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4
            這樣我們在src-dir目錄下就形成了3個源文件目錄binutils-2.14,gcc-core-2.95,3,glibc-2.2.4,其中分別存放著binutils tools,gcc,glibc的源代碼。接下來我們到build-dir中創(chuàng)建3個與這三個源文件目錄對應的編譯目錄。
            cd ../build-dir
            mkdir ../build-dir/build-binutils
            mkdir ../build-dir/build-gcc
            mkdir ../build-dir/build-glibc
            我們將在這三個目錄中完成對binutils tools, gcc, glibc的配置和編譯工作。下面還要把內(nèi)核文件解壓到kernel目錄下,并打補丁。
            cd ../kernel
            tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz
            cd ./linux-2.4.21
            patch –p1 < ../../setup-dir/ patch-2.4.21-rmk1
            二、開始創(chuàng)建
            1、 確定幾個系統(tǒng)變量
            cd ../../
            export TARGET=arm-linux
            export PREFIX=../arm/tool-chain
            export TARGET_PREFIX=$PREFIX/$TARGET
            export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21
            export PATH=$PREFIX/bin:$PATH
            幾個系統(tǒng)變量經(jīng)常要用到,TARGET定義了目標機,PREFIX是工具鏈的安裝目錄,KERNEL_SOURCE_LOCATION是內(nèi)核文件位置。
            TARGET這個變量對于ARM體系的目標機來說取值為arm-linux,對于其他體系結構的機器如ppc,mips的取值的詳細清單可以參見glibc目錄下的INSTALL文檔.
            2、 創(chuàng)建binutils
            運行如下命令來創(chuàng)建binutils
            cd ./build-dir/build-binutils
            configure ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX
            make
            make install
            這時$PREFIX/bin下創(chuàng)建了一些文件,包括arm-linux-ld,arm-linux-as等。
            3、 編譯內(nèi)核
            cd ../../kernel/linux-2.4.21
            改Makefile文件使
            ARCH = arm
            CROSS_COMPILE=arm-linux-
            make menuconfig
            在System Types中選擇正確的硬件類型
            make dep
            之后執(zhí)行如下操作
            mkdir $TARGET_PREFIX/include
            cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm
            RGET_PREFIX/include/asm
            cp dR $KERNEL_SOURCE_LOCATION/include/linux
            RGET_PREFIX/include/linux
            4、 創(chuàng)建boot-trap gcc,這個GCC沒有glibc庫的支持,所以只能用于編譯內(nèi)核,bootloader等,后面創(chuàng)建C庫也要用到這個編譯器,所以創(chuàng)建它主要是為創(chuàng)建C庫做準備,如果只想編譯內(nèi)核和bootloader那么,就可以到此結束。
            cd ../../build-dir/build-gcc
            ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX
            --with-headers=$ERNEL_SOURCE_LOCATION/include –enable-language=c
            --disable-threads
            然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
            TARGET_LIBGCC2_CFLAGS中添加如下兩個定義
            -Dinhibit-libc –D__gthr_posix_h
            make
            make install
            這時$PREFIX/bin下創(chuàng)建了一些文件,主要創(chuàng)建了arm-linux-gcc。
            5、 創(chuàng)建gblic
            cd ../build-glibc
            export CC=arm-linux-gcc
            ../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX
            --enable-add-ons
            make
            make install
            將glibc庫安裝完之后,我們要到$TARGET_PREFIX/lib這個目錄下修改libc.so文件,將其中
            GROUP(/lib/libc.so.6 /lib/libc_noshared.a)
            這個命令腳本中的/lib 的絕對路徑去掉, 也就是改為如下的形式
            GROUP(libc.so.6 libc_noshared.a)
            這樣下一步創(chuàng)建完整的編譯器時,才不至于導致錯誤.
            6、 創(chuàng)建功能健全的GCC,并創(chuàng)建G++
            在成功創(chuàng)建了libc之后,我們就可以創(chuàng)建功能豐富的GCC編譯器了,并且可以創(chuàng)建支持編譯C++程序的G++。
            cd ../../src-dir
            tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz
            cd ../build-dir/build-gcc
            export CC=gcc
            ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX
            –enable-language=c,c++
            然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
            TARGET_LIBGCC2_CFLAGS中去除如下兩個定義
            -Dinhibit-libc –D__gthr_posix_h
            make
            make install
            7,至此我們成功的創(chuàng)建了ARM Linux的交叉編譯工具。



            評論


            技術專區(qū)

            關閉