交叉编译详解 三 使用脚本自动生成交叉编译链

简介

鉴于从零制作交叉编译链的命令异常繁杂,很容易因为某个细节出现错误。因此,我将自己创建交叉编译链的步骤写成了脚本,如果大家自己搭建时出现错误,可以直接使用脚本进行创建,以此来确定是自己的步骤有问题还是环境差异造成的。

总共有三个脚本,使用说明和脚本源码见后文:

  • toolchain_mkpj.sh 用于创建编译工程目录
  • toolchain_build.sh 用于编译交叉工具链
  • toolchain_config.lst 配置文件(如果需要定制特殊的交叉编译链可以修改这个文件)

安装host工具

sudo apt-get install libncurses5-dev
sudo apt-get install gperf
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install texinfo
sudo apt-get install help2man
sudo apt-get install gawk楚这三个参数的配置意义

注意:这只是我遇到的需要安装的工具,在编译过程中如果缺了什么工具,请自行安装。

建立SDK工程

按照下列目录结构建立 Develop 文件夹和子目录,并上传脚本文件,顶层目录名字 Develop 可以自由修改。

  • script: 编译脚本所在目录
  • source: 工具链的源码包所在目录(如果没有源码也不用担心,脚本会自动下载)

注意:如果是通过windows上传脚本,记得使用dos2unix命令进行格式转换。

Develop/
    ├── script
    │   ├── toolchain_build.sh
    │   ├── toolchain_config.lst
    │   └── toolchain_mkpj.sh
    └── source

创建编译工程

$ ./toolchain_mkpj.sh ../../toolchain
[INFO] ../../toolchain is not exist, create it
[INFO] pkg: binutils-2.27.tar.bz2 is exist, Copy it
[INFO] pkg: gcc-5.4.0.tar.bz2 is exist, Copy it
[INFO] pkg: glibc-2.23.tar.bz2 is exist, Copy it
[INFO] pkg: linux-4.4.25.tar.xz is exist, Copy it

../../toolchain
├── build
├── script
│   ├── toolchain_build.sh
│   └── toolchain_config.lst
├── setup
│   ├── binutils-2.27.tar.bz2
│   ├── gcc-5.4.0.tar.bz2
│   ├── glibc-2.23.tar.bz2
│   └── linux-4.4.25.tar.xz
├── src
└── tool-chain

5 directories, 6 files

配置编译参数

进入编译目录并修改配置文件(后续的命令都在该目录下操作)

$ cd ../../toolchain/script/
$ vi toolchain_config.lst 

export PRJROOT=$1                     # [不修改] 工程目录名,自动适配
export TARGET=arm-none-linux-gnueabi  # [可修改] 目标编译器名称
export PREFIX=${PRJROOT}/tool-chain   # [不修改] 当运行 make install 时的安装目录
export TARGET_PREFIX=${PREFIX}/${TARGET} # [不修改]
export PATH=${PREFIX}/bin:${PATH}     # [不修改] 将新生成的GCC所在目录加入环境变量。脚本执行完毕后恢复
export ARCH=arm                       # [可修改] 需要编译的架构
export BINUTILS_VERSION=binutils-2.27 # [可修改] binutils版本
export GCC_VERSION=gcc-5.4.0          # [可修改] gcc版本
export GLIBC_VERSION=glibc-2.23       # [可修改] glibc版本
export KERNEL_VERSION=linux-4.4.25    # [可修改] kernel版本

编译和结果

$ <
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值