新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于3c2410的linux2.6.22移植(2)

        基于3c2410的linux2.6.22移植(2)

        作者: 時間:2016-11-20 來源:網絡 收藏
        (5) 開始編譯 編譯的過程主要有6個步驟;
        a. 內核頭文件的生成
        b. Binary utilties的生成
        c. Glibc頭文件的生成
        d. 第一階段gcc的生成
        e. glibc庫文件的生成
        f. 完整編譯工具的生成
        注:生成第一階段gcc主要是用來生成glibc庫文件。
        1、 生成內核頭文件
        $root@host:/home/arm/kernel# tar xvjf linux-2.6.22.tar.bz2
        $root@host:/home/arm/kernel# cd linux-2.6.22
        $root@host:/home/arm/kernel/linux-2.6.22#
        make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
        其中menuconfig指定了配置界面,可用的還有config(全字符界面) xconfig(xwindow下的圖形界面)。Ubuntu需要安裝tk8.4以支持xconfig。另外需要將mawk卸載,安裝gawk。(mawk有bug)
        linux2.6的內核提供了對s3c2410的支持。在system中選上s3c2410系列就可以了。配置完畢退出保存。
        $root@host:/home/arm/kernel/linux-2.6.22# cd include
        $root@host:/home/arm/kernel/linux-2.6.22/include# cd linux
        $root@host:/home/arm/kernel/linux-2.6.22/include/linux# ls version.h autoconf.h
        version.h autoconf.h
        這2個文件在后面的編譯中會用到。如果沒有,退到內目錄下make version.h就可以了。
        下面建立鏈接:
        $root@host:/home/arm/kernel/linux-2.6.22/include# ln –s asm-arm asm
        $root@host:/home/arm/kernel/linux-2.6.22/include# ln -s asm/arch-s3c2410 asm/arch
        將內核頭文件拷貝到最終安裝目錄下:
        $root@host:/home/arm/kernel/linux-2.6.22/include# mkdir –p ${TARGET_PREFIX}/include
        $root@host:/home/arm/kernel/linux-2.6.22/include# cp –rd asm-arm ${TARGET_PREFIX}/include
        $root@host:/home/arm/kernel/linux-2.6.22/include#
        cp –r asm- ${TARGET_PREFIX}/include
        $root@host:/home/arm/kernel/linux-2.6.22/include# cp –r linux ${TARGET_PREFIX}/include
        $root@host:/home/arm/kernel/linux-2.6.22/include# cp –d asm ${TARGET_PREFIX}/include

        至此內核頭文件建立完畢。
        2、 建立Binary utilities:
        binutils是一些二進制工具的集合,其中常用的是as ,ar和ld。
        $root@host:/home/arm/kernel/include# cd ${PRJROOT}/build-tools
        $root@host:/home/arm/build-tools# tar xvjf binutils-2.18.tar.bz2
        $root@host:/home/arm/build-tools# cd build-binutils
        $root@host:/home/arm/build-tools/build-binutils#
        patch –Np1 –i /home/arm/build-tools/patch/binutils-2.18*
        $root@host:/home/arm/build-tools/build-binutils#
        ../binutils-2.18/configure --target=${TARGET} –prefix=${PREFIX}
        $root@host:/home/arm/build-tools/build-binutils# make
        $root@host:/home/arm/build-tools/build-binutils# make install
        ${PREFIX}/bin下應該生成一些以arm-linux開頭的文件
        $root@host:/home/arm/build-tools/build-binutils# ls ${PREFIX}/bin
        3、 生成glibc頭文件:
        $root@host:/home/arm/build-tools/build-binutils# cd ..
        $root@host:/home/arm/build-tools/# tar xvjf glibc-2.6.1.tar.bz2
        $root@host:/home/arm/build-tools/#
        tar xvzf glibc-ports-2.6.1.tar.gz --directory ./glibc-2.6.1/
        $root@host:/home/arm/build-tools/# cd glibc-2.6.1
        $root@host:/home/arm/build-tools/glibc-2.6.1# mv glibc-ports-2.6.1 ports –v
        打上補丁:
        $root@host:/home/arm/build-tools/glibc-2.6.1#
        patch –Np1 –i /home/arm/build-tools/patch/glibc-2.6.1-*patch
        $root@host:/home/arm/build-tools/glibc-2.6.1# cd ..
        $root@host:/home/arm/build-tools/# cd build-glibc-headers
        這里需要添加對NPTL線程庫的支持:
        $root@host:/home/arm/build-tools/build-glibc-headers#
        echo “libc_cv_forced_unwind=yes”>>config.cache
        echo “libc_cv_c_cleanup=yes”>>config.cache
        echo “libc_cv_arm_tls=yes”>>config.cache
        注:如果編譯中出現”cannot compute long double size”,添加:
        echo “ac_cv_sizeof_long_double=12”>>config.cache
        $root@host:/home/arm/build-tools/build-glibc-headers#
        ../glibc-2.6.1/configure --host=${TARGET} --prefix=”/usr” --enable-add-ons
        --with-headers=${TARGET_PREFIX}/include --cache-file=config.cache
        $root@host:/home/arm/build-tools/build-glibc-headers#
        make cross-compiling=yes install_root=${TARGET_PREFIX} prefix=””
        install-headers
        $root@host:/home/arm/build-tools/build-glibc-headers#
        mkdir –p ${TARGET_PREFIX}/include/gnu
        $root@host:/home/arm/build-tools/build-glibc-headers#
        touch ${TARGET_PREFIX}/include/gnu/stubs.h
        注:如果編譯過程中出現找不到頭文件的錯誤,可以根據錯誤提示的文件名用touch命令在相應目錄下建立一個空文件,一般就可以編譯通過了。


        關鍵詞: 3c2410linux2.6.22移

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 英山县| 鄢陵县| 新乐市| 昌乐县| 建昌县| 开鲁县| 新河县| 桂阳县| 江都市| 咸宁市| 喀什市| 天祝| 松阳县| 郁南县| 田林县| 招远市| 合肥市| 张家港市| 石城县| 东兰县| 沈丘县| 铜鼓县| 静安区| 河北区| 叙永县| 宁阳县| 朝阳市| 壶关县| 庆城县| 株洲县| 乌拉特中旗| 镇江市| 名山县| 科技| 仁化县| 宁陕县| 澳门| 龙川县| 河北区| 西平县| 方城县|