编译环境
主机硬件环境:
$ uname -a
Linux PC 4.4.0-42-generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
主机软件环境:
$ cat /etc/issue
Ubuntu 16.04.1 LTS
需要安装的工具:
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
sudo apt-get install libtool
sudo apt-get install libtool-bin
sudo apt-get install automake
libncurses5-dev: developer’s libraries for ncurses(执行 make menuconfig 时需要)
gperf: 一个完美的hash函数生成器。例子可以看这个帖子:
gperf 使用实例
bison: 一个语法分析器生成器。Bison 把一个关于“向前查看 从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最右” (GLR)语法分析器
flex: 词法分析器
texinfo: 是Linux系统提供的另外一种格式的帮助信息。和man相比,textinfo具有更好交互功能。它支持链接跳转功能,通常使用info和pinfo命令来阅读textinfo文档
help2man: 一个可以自动为我们的程序生成man手册的工具
gawk: linux下用于查找替换的文本工具
libtool / libtool-bin: Generic library support script
automake: Tool for generating GNU Standards-compliant Makefiles
备注:
- 不同的环境需要安装的工具不完全一致,出错时可以根据错误提示来排查
- 各种工具的描述可以使用 apt-cache search XXX 命令去查询
配置全局变量
export PRJROOT=/home/user/tool_prj1 # 修改为自己的工程所在的目录
export TARGET=arm-none-linux-gnueabi
export PREFIX=${PRJROOT}/tool-chain
export TARGET_PREFIX=${PREFIX}/${TARGET}
export PATH=${PREFIX}/bin:${PATH}
export ARCH=arm
export BINUTILS_VERSION=binutils-2.27
export GCC_VERSION=gcc-5.4.0
export GLIBC_VERSION=glibc-2.23
export KERNEL_VERSION=linux-4.4.25
目录结构
$ tree -L 2
tool_prj1
├── build # src的编译目录
├── 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 # 工具链安装位置