用crosstool工具建立交叉工具链过程记录
来源:互联网 发布:剑三苍云捏脸数据 编辑:程序博客网 时间:2024/06/07 07:02
- $ mkdir /home/lee/arm
- $ mkdir /home/lee/arm/downloads
下载诸多文件包:
- crosstool-0.43.tar.gz
- linux-2.6.15.tar.gz
- binutils-2.16.tar.gz
- gcc-4.1.0.tar.gz
- glibc-2.3.2.tar.gz
- glibc-linuxthreads-2.3.2.tar.gz
- linux-libc-header-2.6.12.0.tar.bz2
- tar -zxvf crosstool-0.43.tar.gz
一.建立脚本文件
因为本次交叉编译是为了在arm9架构的处理器s3c2440开发板上用,我们要创建的是针对于arm9tdmi架构的arm-linux-gcc,应用crosstool提供的模板:demo-arm9tdmi.sh。首先要修改:
- $ cd crosstool-0.43
- $ gedit demo-arm9tdmi.sh
- TARBALLS_DIR=$HOME/arm/downloads
- RESULT_TOP=/opt/crosstool
- ...
- eval 'cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat' sh all.sh -notest
- ...
二.建立配置文件
demo-arm9tdmi.sh脚本文件会访问demo-arm9tdmi.dat和gcc-4.1.0-glibc-2.3.2.dat两个文件,这两个文件是crosstool编译的配置文件。
demo-arm9tdmi.dat文件用于定义内核配置,定义生成工具链的名称(如arm-linux-gcc),以及编译选项,我们只修改生成工具链名称,其他默认。如下:
- TARGET=arm-linux-
- # /arm/downloads/gcc-4.1.0-glibc-2.3.2.dat
- BINUTILS_DIR=binutils-2.16.1
- GCC_CORE_DIR=gcc-3.3.6
- GCC_DIR=gcc-4.1.0
- GLIBC_DIR=glibc-2.3.2
- LINUX_DIR=linux-2.6.15
- LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
- GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
- GDB_DIR=gdb-6.5
三.执行脚本
在执行脚本前发生了小插曲,系统中的gcc是gcc-4.4版本的,太过于新以至于编译过程中提示gcc版本太旧(无语,linux的自由带给普通开发者的是无穷的变数与不确定;不统一的版本,各种的不一致不协调。这本身就是一种巨大的障碍,自由之祸)。后参考网上教程编译安装了gcc-3.3.6,注意编译好gcc-3.3.6后,一定要和系统里gcc建立链接,我采取了把原来链接(gcc和gcc-4.4链接一起)删除,然后建立新的链接:
- $ rm /usr/bin/gcc
- $ ln -s /opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin/gcc gcc
- $ cd $HOME/arm/crosstool-0.43
- $ ./demo-arm9tdmi.sh
最后将工具链所在路径添加到环境变量PATH中去,以方便在终端环境下直接调用相应工具。方法是用root打开/etc/bash.bashrc文件,在最后一行添加:
- export PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH
在整个编译过程中,发现了太多的不确定的东西,在编译过程中会出现各种文件确实和编译错误。原因一方面是因为某些文件本身存在bug(如gdb-6.5的一行代码在gcc-4.1下根本编译不过去),另一方面是因为linux的不断变化不断更新,致使很多文件都“不配套“。这些东西确实很让人气馁。
作此小结,继续努力。
2012.1.7 by lee
reference:
<<嵌入式linux系统开发教程>> 贺丹丹 清华大学出版社
网络上诸多帖子,不一一列举。
转载自:http://blog.csdn.net/lhw88117/article/details/7183896
- 用crosstool工具建立交叉工具链过程记录
- 用crosstool工具建立交叉工具链过程记录
- 用crosstool-ng建立arm-linux交叉工具链
- 用crosstool-ng建立arm交叉编译工具链
- 用crosstool-ng建立arm交叉编译工具链
- [转]ubuntu下用crosstool建立交叉编译工具链
- 用Crosstool工具构建交叉工具链
- 用Crosstool工具构建交叉工具链
- 用Crosstool工具构建交叉工具链
- 用Crosstool 制作交叉编译工具链
- 建立arm-linux交叉工具链 crosstool-ng
- 建立arm-linux交叉工具链 crosstool-ng
- 建立arm-linux交叉工具链 crosstool-ng
- 用crosstool-ng建立arm-linux 4.3.2 交叉工具链
- 用crosstool-ng建立自己的ARM交叉编译工具链 (适用于S3C6410以及其它处理器)
- 用crosstool-ng建立自己的ARM交叉编译工具链 (适用于S3C6410以及其它处理器)
- 用crosstool-ng建立自己的ARM交叉编译工具链
- 用crosstool-ng编译交叉工具链 for S3C6410
- SAMBA服务介绍(从上到下,非常全面,推荐)
- Photoshop 脚本 - 批量更改图片尺寸
- svnrdump dump 实现 SVN 库的远程导出
- 关于Java IO的使用
- nginx常用代理方式
- 用crosstool工具建立交叉工具链过程记录
- C++第三章总结
- LVS Nginx HAProxy 优缺点
- winForm pictureBox拖动图片and动态new 窗体&移动Panel窗体头
- 设置thinkpad e430c从U盘启动的方法
- Web前端优化最佳实践及工具集锦
- iOS7常用控件尺寸
- C++排序之堆排序(6)
- java断言的使用