针对s3c2440芯片制作交叉编译工具链

    技术2022-07-11  106

    移植uboot-2020.01至JZ2440

    由于最近制作文件系统,发现原来所用编译器的库只支持armv5t架构,并不支持我所用的armv4t架构的arm9芯片,因此针对我所用芯片s3c2440制作了最新的交叉编译工具链,先附上图。 以下为制作交叉编译工具链步骤:

    安装crosstool-NG a. 建立arm-linux-tools目录

    mkdir arm-linux-tools cd arm-linux-tools/

    b. 从http://crosstool-ng.org/download/crosstool-ng/中下载新版crosstool-NG c. 解压crosstool-NG

    tar -jxvf crosstool-ng-1.24.0.tar.bz2

    d. 在arm-linux-tools下建立src目录

    mkdir src

    e. 配置并进行依赖检测

    cd crosstool-ng-1.24.0 ./configure 如果存在包缺失的现象,安装好之后再执行配置即可

    f. 编译并安装

    make make install

    g. 检查crosstool-NG是否安装成功

    ct-ng -v

    配置交叉编译工具链 在crosstool-NG中有很多已经做好的默认配置(位于crosstool-ng-1.24.0/samples目录下),这里只需要进行修改就可以了。因为是制作arm-linux的交叉编译工具链,所以选择arm-unknown-linux-gnueabi进行配置。 a. 拷贝默认的.config

    cp samples/arm-unknown-linux-gnueabi/crosstool.config .config

    b. 配置config

    ct-ng menuconfig

    c. 设定源码包路径和交叉编译器的安装路径

    源码包路径:设置Paths and misc options下的Local tarballs directory为/arm-linux-tools/src 交叉编译器的安装路径:设置Paths and misc options下的Prefix directory为/arm-linux-tools/x-tools/${CT_TARGET}

    d. 修改交叉编译器针对的架构

    设置Target options下的Architecture level为armv4t 设置Target options下的Emit assembly for CPU为arm9tdmi 设置Target options下的Tune for CPU为arm920t

    e. 设置编译时的并行进程数

    设置Paths and misc options下的Number of parallel jobs为4。这个数值不宜过大,应该为CPU核心数量的两倍。

    f. 设置编译器vender名

    设置Toolchain options下的Tuple's vendor string为S3C2440,这样生成的编译器的前缀就是arm-S3C2440-linux-gnueabi-

    g. 编译

    ct-ng build.4 编译过程出错查看build.log文件,wget获取依赖包失败可手动下载放在.build/tarballs/目录下

    h. 配置环境变量

    sudo vi /etc/environment 增加:/home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/bin于PATH

    i. 检查交叉编译工具链是否安装成功

    arm-S3C2440-linux-gnueabi-gcc -v

    j. 编译成功后的交叉编译器路径

    编译器路径:/home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/bin/ 库文件路径:/home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/arm-s3c2440-linux-gnueabi/sysroot/lib/ /home/hanrunyu/work/tools/arm-linux-tools/x-tools/arm-s3c2440-linux-gnueabi/arm-s3c2440-linux-gnueabi/sysroot/usr/lib/
    Processed: 0.011, SQL: 9