求助,关于交叉编译
archlinux吧
全部回复
仅看楼主
level 5
蛋打地球 楼主
根据我的理解,制作交叉编译工具链的基本过程是这样的:
1.编译目标系统的binutils
2.编译目标系统的gcc,不含C库支持版本,为了方便区分这里先称作gcc stage1
3.用目标系统的gcc stage1编译C库
4.编译出支持C库的目标系统gcc,称作gcc stage2
这样对吗?
如果对的话,谁实践过不借助工具构建交叉编译工具链的可以发下大概过程么?
我Google上找了一些,不是过时就是只做到stage1结束了。
2016年08月10日 16点08分 1
level 13
你看一下CLFS就知道了,LFS也可以,但是LFS不强调交叉编译,所有看能看了之后体会不深。
如果是针对裸机的,其实可以连libc都不要,而且binutils和gcc都只需要编译一遍,一个例子是coreboot的交叉工具链,看看make crossgcc的过程就知道了。
针对Linux的话,根据CLFS的步骤,是这么做的:
1. cross binutils: 在HOST上运行,产生TARGET的二进制文件
2. cross gcc (static): 在HOST上运行,产生TARGET的二进制文件,不产生动态库,不使用TARGET平台的C库
3. glibc: TARGET平台的C库,用前两步构建的交叉工具链编译
4. cross gcc: 在HOST上运行,产生TARGET的二进制文件,交叉编译时使用上一步的glibc
这个时候已经可以构建出独立运行于TARGET的程序了,crosstool-ng之类的工具做到这里就完成任务了。对于CLFS,还要先构建一套工具,其中的binutils和gcc都是TARGET->TARGET,最后boot/chroot之后再用这套工具构建最终的系统。
2016年08月11日 10点08分 2
感谢回复,我的回复在楼下,谢谢。
2016年08月12日 16点08分
level 10
源里有arm的交叉编译工具链
2016年08月12日 16点08分 6
1