crifan 发表于 2013-09-05 18:11

crosstool-ng详解

本帖最后由 crifan 于 2013-09-05 18:11 编辑

整理的,关于crosstool-ng的教程。
用到的,应该会有帮助。
没用过的,路过看看即可。
详见:

crosstool-ng详解    版本:v2.0
Crifan Li

摘要本文主要介绍了什么是crosstool-ng,crosstool-ng的名字的写法的含义,为何要有crosstool-ng,crosstool-ng的各种特点,crosstool-ng的使用的基本逻辑;
下载crosstool-ng,安装crosstool-ng到当前系统环境中;
接着介绍了crosstool-ng的常见文件夹的结构组织,关于crosstool-ng本身的一些背景知识和逻辑,比如用ct-ng help查看所拥有的功能,用ct-ng list-steps查看本身的build过程分成哪几步,用ct-ng list-samples查看当前已包含哪些默认的示例配置,用ct-ng show-tuple查看当前配置的是什么交叉编译器,用ct-ng version查看当前crosstool-ng的版本,然后介绍了crosstool-ng本身的配置的使用的基本逻辑,包含使用已有的crosstool-ng的示例配置和根据需要去修改你的crosstool-ng的配置
然后极其详细的解释了crosstool-ng中的各种配置参数含义和用法,主要包含几个方面:crosstool-ng工具相关的配置参数,比如多线程编译以节省时间,从之前错误的那一步恢复继续编译,出错时不立刻退出等,再介绍crosstool-ng核心配置详解,包括crosstool-ng本身相关的重要参数,比如源码包下载保存路径,工作路径,目标安装路径,和交叉编译相关的核心参数,包括举例说明Architecture level, Emit assembly for CPU, Tune for CPU如何去配置,以及其他重要参数,比如MMU,大小端Endianness,浮点处理单元FPU,CFLAGS参数,Linux内核版本,binutils版本,gcc版本,C库的选择,线程模型的选择等。
接着介绍用ct-ng build编译crosstool-ng的过程,然后总结了crosstool-ng常见问题及解决办法,包括几方面:安装crosstool-ng工具本身的,crosstool-ng在配置阶段的,crosstool-ng在编译阶段的
最后介绍了与crosstool-ng相关的一些事项,比如crosstool-ng的作者的主页,linaro对crosstool-ng的支持,Buildroot支持crosstool-ng。

http://www.crifan.com/files/res/docbook/images/tip.png本文提供多种格式供:


在线阅读
HTMLHTMLsPDFCHMTXTRTFWEBHELP
下载(7zip压缩包)HTMLHTMLsPDFCHMTXTRTFWEBHELP

HTML版本的在线地址为:
http://www.crifan.com/files/doc/docbook/crosstool_ng/release/html/crosstool_ng.html





    2013-09-04

修订历史
修订 2.02013-09-04crl


[*]将帖子内容整理过来
[*]添加了关于配置的详细解释
[*]添加了关于常见错误的总结





版权 © 2013 Crifan, http://crifan.com
本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)


目录

目录
前言
1.本文目的
2.待完成
1.crosstool-ng简介
1.1.什么是crosstool-ng
1.2.crosstool-ng的名字的写法
1.3.为何要有crosstool-ng
1.4.crosstool-ng的特点
1.4.1.支持(类似于Linux内核配置的那个)menuconfig
1.4.2.支持足够多,且越来越多的架构(architecture)
1.4.3.支持工具链中可选多种不同的C库等模块
1.4.4.支持不同目标OS平台
1.4.5.补丁仓库
1.4.6.支持不同的线程模型
1.4.7.支持软浮点和硬件浮点
1.4.8.支持multlib的工具链(暂处于试验阶段)
1.4.9.支持众多调试相关的内容
1.4.10.提供示例配置
1.4.11.支持多种主机编译环境:各种Linux发行版,Cygwin等
1.5.crosstool-ng的使用的基本逻辑
2.下载和安装crosstool-ng
2.1.下载crosstool-ng
2.2.安装crosstool-ng
3.配置crosstool-ng:ct-ngmenuconfig
3.1.关于crosstool-ng本身的一些背景知识和逻辑
3.1.1.用ct-nghelp查看所拥有的功能
3.1.2.用ct-nglist-steps查看本身的build过程分成哪几步
3.1.3.用ct-nglist-samples查看当前已包含哪些默认的示例配置
3.1.4.用ct-ngshow-tuple查看当前配置的是什么交叉编译器
3.1.5.用ct-ngversion查看当前crosstool-ng的版本
3.2.crosstool-ng本身的配置的使用的基本逻辑
3.2.1.使用已有的crosstool-ng的示例配置
3.2.2.根据需要去修改你的crosstool-ng的配置
3.3.crosstool-ng的配置参数详解
3.3.1.crosstool-ng工具相关的配置参数
3.3.1.1.多线程编译以节省时间
3.3.1.2.从之前错误的那一步恢复继续编译
3.3.1.3.出错时不立刻退出
3.3.2.crosstool-ng核心配置详解
3.3.2.1.crosstool-ng本身相关的重要参数
3.3.2.1.1.源码包下载保存路径
3.3.2.1.2.工作路径
3.3.2.1.3.目标安装路径
3.3.2.2.交叉编译相关的核心参数
3.3.2.2.1.crosstool-ng中的配置参数:Architecture level, Emit assembly for CPU, Tune for CPU
3.3.2.2.2.crosstool-ng中的配置参数:MMU
3.3.2.2.3.crosstool-ng中的配置参数:大小端Endianness
3.3.2.2.4.crosstool-ng中的配置参数:浮点处理单元FPU
3.3.2.2.5.crosstool-ng中的配置参数:CFLAGS参数
3.3.2.2.6.crosstool-ng中的配置参数:Linux内核版本
3.3.2.2.7.crosstool-ng中的配置参数:binutils版本
3.3.2.2.8.crosstool-ng中的配置参数:gcc版本
3.3.2.2.9.crosstool-ng中的配置参数:C库的选择
3.3.2.2.10.crosstool-ng中的配置参数:线程模型的选择
4.编译crosstool-ng:ct-ngbuild
5.crosstool-ng常见问题及解决办法
5.1.安装crosstool-ng工具本身的阶段常见问题及解决办法
5.1.1.缺少一些开发相关的工具
5.1.1.1.configure: error: missing required tool: bison
5.1.1.2.configure: error: missing required tool: flex
5.1.1.3.configure: error: missing required tool: gperf
5.1.1.4.configure: error: missing required tool: makeinfo
5.1.1.5.configure: error: could not find GNU awk
5.1.1.6.configure: error: could not find GNU libtool >= 1.5.26
5.1.1.7.configure: error: could not find GNU automake >= 1.10
5.1.1.8.configure: error: could not find curses header, required for the kconfigfrontends
5.1.2.在Cygwin下出现的一些问题
5.1.2.1.zconf.tab.o:zconf.tab.c:(.text+0x162a): undefined reference to‘_libintl_gettext'
5.1.2.2.lxdialog/menubox.o:menubox.c:(.text+0x7d): undefined reference to `_wattrset'
5.1.2.3.nconf.c:1521:2: error: lvalue required as left operand of assignment
5.1.2.4.bash: ct-ng: command not found
5.1.2.5.Win7下无法编辑保存Cygwin中的文件
5.2.crosstool-ng在编译阶段常见问题及解决办法
5.2.1.不论何种平台下编译crosstool-ng常见错误及解决办法
5.2.1.1.scripts/unifdef.c:209:25: error: conflicting types for ‘getline'
5.2.1.2.Build failed in step ‘Extracting and patching toolchain components’,infunction ‘CT_DoExecLog’ (line unknown, sorry)
5.2.1.3. Error 1,/tmp/cc7Xh6xp.s:21: Error: selectedprocessor does not support ARM mode `fmsr s14,r0′
5.2.1.4..build/arm-xscale-linux-gnueabi/buildtools/include/cloog/ppl_backend.h:54:undefined reference to `_ppl_finalize'
5.2.1.5.Makefile:240: *** mixed implicit and normal rules. Stop.
5.2.1.5.1.手动修改每个Makefile中对应的混合规则->使得3.82的make可以识别
5.2.1.5.2.把3.82的make换成3.81版本的make
5.2.1.5.2.1.把你当前的(Linux或Cygwin等)系统环境中的3.82的make换成3.81的make
5.2.1.5.2.2.用crosstool-ng中提供的3.81的make(而不用更换系统环境中的3.82的make)
5.2.2.Cygwin下编译crosstool-ng常见错误及解决办法
5.2.2.1.Cygwin下编译crosstool-ng时导致内存泄露
5.2.2.2.Your file system in ‘xxx/targets’ is *not* case-sensitive!
5.2.3.Linux下编译crosstool-ng常见错误及解决办法
5.2.3.1.gcc-4.2.2/gcc/regrename.c:1646:12: error: ‘IFCVT_ALLOW_MODIFY_TEST_IN_INSN’ undeclared(first use in this function)
6.与crosstool-ng相关的一些事项
6.1.crosstool-ng的作者的主页
6.2.crosstool-ng支持Linaro的gcc
6.3.Buildroot支持crosstool-ng
参考书目
范例清单
3.1. 从出错的那一步恢复重新继续编译
3.2. 如何在编译失败后,修复错误,然后继续接着编译
3.3. 举例说明Architecturelevel, Emit assembly for CPU, Tune for CPU如何去配置
4.1. 正常输出的log信息



daniel_kohler 发表于 2013-09-06 09:25

整理的很有条理,好贴就要顶起,

Vixyl 发表于 2013-09-08 14:19

又一精品,crifan就是精品代名词了,谢谢了

crifan 发表于 2013-09-08 23:09

回复 3# Vixyl


    过奖。不过我倒的确是不喜欢发没质量的帖子,:D。

ckf513728912 发表于 2013-09-12 20:07

3Q 谢谢分享
页: [1]
查看完整版本: crosstool-ng详解