http://linuxfromscratch.org/clfs/view/clfs-2.0/arm/
https://www.cnblogs.com/leaven/archive/2010/11/17/1879679.html
build / host / target
这是三个平台,其中host / target的概念我们在以前VxWorks产品的开发中应该已经比较了解。以目前我们的工作环境和项目为例,host就是x86(PENTIUM)+Windows,target就是PPC+VxWorks。
build: 我们制作交叉编译器的平台,即我们的临时工作环境。
host: 交叉编译器运行的平台,即我们将来使用交叉编译器生成目标软件的平台。
target: 目标平台,即交叉编译器编译出来的东东运行的平台。
如果我们在PC+linux的环境上制作交叉编译器,那么build就是x86+linux,当然配置代码的时候不是这么表示,常见的平台表示方法有:
i686-pc-linux-gnu
powerpc-wrs-vxworks
i586-mingw32msvc
等等。
process
以下三图就是制作交叉编译器的过程,红色方框内是我们最终生成的交叉编译器。
上图表明,build / host / target各不一样。
build平台上的原始gcc / binutils / libc只能生成build平台上运行的程序。
因此我们需要先编译出一个不同于原始gcc / binutils的工具链,就是1# gcc / binutils,
这个工具链运行于build平台,但生成的程序是运行在host平台上的。
使用1#工具链,生成2#工具链。
2#工具链工作于host平台,编译出的程序运行于target平台,2#就是我们需要的交叉编译工具。
如果target的解决方案中已经提供了商业的libc库(如VxWorks库),则不需要单独编译libc。
如果需要libc库,则该库由1#工具链生成。