JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.
crosstool-ng详解
1.4. crosstool-ng的特点
Sidebar
|
|
1.4.7. 支持软浮点和硬件浮点
详见:
第 3.3.2.2.4 节 “crosstool-ng中的配置参数:浮点处理单元FPU”
Contents
Search
前言
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-ng menuconfig
3.1. 关于crosstool-ng本身的一些背景知识和逻辑
3.1.1. 用ct-ng help查看所拥有的功能
3.1.2. 用ct-ng list-steps查看本身的build过程分成哪几步
3.1.3. 用ct-ng list-samples查看当前已包含哪些默认的示例配置
3.1.4. 用ct-ng show-tuple查看当前配置的是什么交叉编译器
3.1.5. 用ct-ng version查看当前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-ng build
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 kconfig frontends
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’,in function ‘CT_DoExecLog’ (line unknown, sorry)
5.2.1.3. [libgcc/./_powisf2.o] Error 1,/tmp/cc7Xh6xp.s:21: Error: selected processor 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
参考书目
Search Highlighter (On/Off)