crosstool-ng 制作arm交叉工具链心得
2016-04-21 11:15
567 查看
最近用crosstool-ng 最新版(当前是1.22.0)编译出了交叉工具链工具
以下是基本操作步骤:
首先,编译安装crosstool-ng
1)配置 sudo ./configure --prefix=/opt/crosstool-ng #配置安装目录为/opt/crosstool-ng
2)编译 sudo make
3)安装 sudo make install
4)设置环境变量 echo "export PATH=$PATH:/opt/crosstool-ng/bin " >> ~/.bashrc
第二,配置工具链
1.查看一下有哪些工具链选项
1)ct-ng list-samples
2)ct-ng arm-unknown-linux-gnueabi (以arm-unknown-linux-gnueabi为例,可以选其它)
3)ct-ng menuconfig
这个有点多:
Paths and misc options --->
(${HOME}/development/crosstool-ng/src) Local tarballs directory 保存源码包路径
(${HOME}/development/x-tools/${CT_TARGET}) Prefix directory 交叉编译器的安装路径
(4) Number of parallel jobs 指定同时执行 4个工作线程
Target options ---> 从datasheet中的 BLOCK DIAGRAM 中可以看到
*** Target optimisations ***
(armv4t) Architecture level
(arm9tdmi) Emit assembly for CPU
(arm920t) Tune for CPU
crosstool-ng中的Architecture level, Emit assembly for CPU, Tune for CPU,分别对应的是gcc中的-march=xxx, -mcpu=xxx, -mtune=xxx
S3C2440的对应的配置是:
Architecture level=CT_ARCH_ARCH=-march=armv4t
Emit assembly for CPU=CT_ARCH_CPU=-mcpu=arm9tdmi
Tune for CPU=CT_ARCH_TUNE=-mtune=arm920t
Toolchain options --- >
(cortex_a8 ) Tuple's vendor string
添加自定义 信息 ,比如:
cortex_a8 ,制作后的交叉编译器名如: arm -cortex_a8 -linux-gnueabi-
zjhzjh ,制作后的交叉编译器名如: arm -zjhzjh -linux-gnueabi-
不设置,制作后的交叉编译器名如: arm -unknown-linux-gnueabi-
(armarm -linux) Tuple's alias) Tuple's alias
设置别名,这样会给每个工具创建一软链接比如 :
arm -linux-gcc链接到 到 arm -cortex_a8-linux-gnueabi-gcc
第三,开始编译工具链
ct-ng build
(注意,硬盘空间要预留大一些,至少6G以上,上次用10G )
当然在制作工具链的时候,根据其提示,自行用wget将源代码下载到src目录会更快捷,同时也可以下载最新的软件包,这步在进阶步骤中会用到
以下是进阶步骤:
由于即使是最新版的crosstool其中的内核,gcc binuntils等工具包版本也是过时的,比如,内核版本是4.3,而当前版本是4.5.1
所以,需要动手修改crosstool中的配置文件进行最新版本更新,当然,此步骤是在编译过crosstool中的最新版本后进行
主要修改/opt/crosstool-ng/lib/crosstool-ng-1.22.0/config目录下各文件
以内核为例:
内核 kernel目录下linux.in
4.5.1是我添加的 还有定义主要修改这两处
config KERNEL_V_4_5_1
bool
prompt "4.5.1 (stable)"
config KERNEL_V_4_3
bool
prompt "4.3"
default "4.5.1" if KERNEL_V_4_5_1
default "4.3" if KERNEL_V_4_3
更改gcc 在目录/opt/crosstool-ng/lib/crosstool-ng-1.22.0/config/cc
config CC_GCC_V_5_3_0
bool
prompt "5.3.0"
select CC_GCC_5
config CC_GCC_V_5_2_0
bool
prompt "5.2.0"
select CC_GCC_5
default "5.3.0" if CC_GCC_V_5_3_0
default "5.2.0" if CC_GCC_V_5_2_0
最新版本的是5.3.0 crosstool-ng中的最高版本是5.2.0
就是添加版本号,仿造它原来的,以此类推
其它的库在companion_libs中
哪个升版本了就添加升级后的版本号
这样编译出来的工具链就是最新版本的组合了。
还有一个是在编译cortex A8等高端CPU时,在配置的时候可以将FPU改为硬件浮点,这样,才编译时会用到CPU内部的硬件浮点部件
以s5pv210为例:由于支持neon和vfpv3所以可以使用硬件浮点
(cortex-a8) Emit assembly for CPU
(neon) Use specific FPU 此处也可以使用vfpv3因为s5pv210支持
Floating point: (hardware (FPU)) --->
这样,编译出来的就是使用硬件浮点的工具链了。
参考资料:
使用crosstool-ng-1.9.3为S3C2440制作交叉编译工链 (http://blog.163.com/allegro_tyc/blog/static/337437682011512101413873/)
嵌入式Linux学习笔记(基于S5PV210 TQ210) (http://blog.csdn.net/zjhsucceed_329/article/details/32336019)
【总结】crosstool-ng使用心得和注意事项 (http://www.crifan.com/summary_crosstool_ng_note/)
以下是基本操作步骤:
首先,编译安装crosstool-ng
1)配置 sudo ./configure --prefix=/opt/crosstool-ng #配置安装目录为/opt/crosstool-ng
2)编译 sudo make
3)安装 sudo make install
4)设置环境变量 echo "export PATH=$PATH:/opt/crosstool-ng/bin " >> ~/.bashrc
第二,配置工具链
1.查看一下有哪些工具链选项
1)ct-ng list-samples
2)ct-ng arm-unknown-linux-gnueabi (以arm-unknown-linux-gnueabi为例,可以选其它)
3)ct-ng menuconfig
这个有点多:
Paths and misc options --->
(${HOME}/development/crosstool-ng/src) Local tarballs directory 保存源码包路径
(${HOME}/development/x-tools/${CT_TARGET}) Prefix directory 交叉编译器的安装路径
(4) Number of parallel jobs 指定同时执行 4个工作线程
Target options ---> 从datasheet中的 BLOCK DIAGRAM 中可以看到
*** Target optimisations ***
(armv4t) Architecture level
(arm9tdmi) Emit assembly for CPU
(arm920t) Tune for CPU
crosstool-ng中的Architecture level, Emit assembly for CPU, Tune for CPU,分别对应的是gcc中的-march=xxx, -mcpu=xxx, -mtune=xxx
S3C2440的对应的配置是:
Architecture level=CT_ARCH_ARCH=-march=armv4t
Emit assembly for CPU=CT_ARCH_CPU=-mcpu=arm9tdmi
Tune for CPU=CT_ARCH_TUNE=-mtune=arm920t
Toolchain options --- >
(cortex_a8 ) Tuple's vendor string
添加自定义 信息 ,比如:
cortex_a8 ,制作后的交叉编译器名如: arm -cortex_a8 -linux-gnueabi-
zjhzjh ,制作后的交叉编译器名如: arm -zjhzjh -linux-gnueabi-
不设置,制作后的交叉编译器名如: arm -unknown-linux-gnueabi-
(armarm -linux) Tuple's alias) Tuple's alias
设置别名,这样会给每个工具创建一软链接比如 :
arm -linux-gcc链接到 到 arm -cortex_a8-linux-gnueabi-gcc
第三,开始编译工具链
ct-ng build
(注意,硬盘空间要预留大一些,至少6G以上,上次用10G )
当然在制作工具链的时候,根据其提示,自行用wget将源代码下载到src目录会更快捷,同时也可以下载最新的软件包,这步在进阶步骤中会用到
以下是进阶步骤:
由于即使是最新版的crosstool其中的内核,gcc binuntils等工具包版本也是过时的,比如,内核版本是4.3,而当前版本是4.5.1
所以,需要动手修改crosstool中的配置文件进行最新版本更新,当然,此步骤是在编译过crosstool中的最新版本后进行
主要修改/opt/crosstool-ng/lib/crosstool-ng-1.22.0/config目录下各文件
以内核为例:
内核 kernel目录下linux.in
4.5.1是我添加的 还有定义主要修改这两处
config KERNEL_V_4_5_1
bool
prompt "4.5.1 (stable)"
config KERNEL_V_4_3
bool
prompt "4.3"
default "4.5.1" if KERNEL_V_4_5_1
default "4.3" if KERNEL_V_4_3
更改gcc 在目录/opt/crosstool-ng/lib/crosstool-ng-1.22.0/config/cc
config CC_GCC_V_5_3_0
bool
prompt "5.3.0"
select CC_GCC_5
config CC_GCC_V_5_2_0
bool
prompt "5.2.0"
select CC_GCC_5
default "5.3.0" if CC_GCC_V_5_3_0
default "5.2.0" if CC_GCC_V_5_2_0
最新版本的是5.3.0 crosstool-ng中的最高版本是5.2.0
就是添加版本号,仿造它原来的,以此类推
其它的库在companion_libs中
哪个升版本了就添加升级后的版本号
这样编译出来的工具链就是最新版本的组合了。
还有一个是在编译cortex A8等高端CPU时,在配置的时候可以将FPU改为硬件浮点,这样,才编译时会用到CPU内部的硬件浮点部件
以s5pv210为例:由于支持neon和vfpv3所以可以使用硬件浮点
(cortex-a8) Emit assembly for CPU
(neon) Use specific FPU 此处也可以使用vfpv3因为s5pv210支持
Floating point: (hardware (FPU)) --->
这样,编译出来的就是使用硬件浮点的工具链了。
参考资料:
使用crosstool-ng-1.9.3为S3C2440制作交叉编译工链 (http://blog.163.com/allegro_tyc/blog/static/337437682011512101413873/)
嵌入式Linux学习笔记(基于S5PV210 TQ210) (http://blog.csdn.net/zjhsucceed_329/article/details/32336019)
【总结】crosstool-ng使用心得和注意事项 (http://www.crifan.com/summary_crosstool_ng_note/)
相关文章推荐
- #新闻拍一拍# IBM 招聘广告要求应聘者具备至少 12 年 K8S 使用经验
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程