支持浮点运算功能的交叉编译工具链的制作
来源:互联网 发布:能听金庸小说的软件 编辑:程序博客网 时间:2024/05/17 23:05
由于研究需要,打算移植一个高版本的UBOOT引导程序到开发板上,所有配置和需要添加的代码都搞定后编译提示错误“... uses hardware FP,whereas U-Boot uses software-FP,Relocation truncated to fit : R_ARM_PLT32 --div0”。就是说UBOOT中所使用的是软件浮点功能,而编译器使用的是硬件浮点功能。通常的交叉编译工具都不带软件浮点功能,在网上想搜寻一个类似arm-softfloat-gnu的交叉编译工具无果,只得自己制作一个。花了一天时间,碰到了很多错误,不过总算是顺利解决了。各位大虾见笑了。下面说下详细的步骤:
1.下载必须的工具和源码
crosstool-0.43.tar.gz ,这个在http://www.kegel.com/crosstool/crosstool-0.43.tar.gz有。
binutils-2.15.tar.bz2
gcc-3.4.5.tar.bz2
glibc-2.3.6.tar.bz2
glibc-linuxthreads-2.3.6.tar.bz2
linux-2.6.8.tar.bz2
linux-libc-headers-2.6.12.0.tar.bz2
将这几个包放在同一个文件夹下。比如:/home/ctr/dowloads
其次是一些编译中要用的通用的库和工具,省得到编译时候出错浪费时间,我使用的Linux是Ubuntu10.04,因此直接:
sudo apt-get install flex bison libncurses5-dev patch texinfo
2. 降低GCC版本:由于Ubuntu10.04自带的gcc为4.4版本的,版本过高,编译时候对语法要求比较严格,使用该编译器会产生很多莫名奇妙的问题,所以改用gcc-4.1
apt-get install gcc-4.1
rm /usr/bin/gcc (删除GCC,它只是个到gcc-4.3.2的软链接文件)
ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的软链接)
3.修改.sh脚本
进入/home/ctr/dowloads,解压软件包:
tar –zxvf crosstool-0.43.tar.gz
进入目录:cd crosstool-0.43
拷贝一个配置脚本:mv demo-arm-softfloat.sh arm-softfloat.sh
修改配置:gedit arm-softfloat.sh
TARBALLS_DIR=$HOME/downloads //表示下载的源码的存放目录
RESULT_TOP=/opt/crosstools //表示生成的工具链的存放目录
修改为:
TARBALLS_DIR=/home/ctr/downloads
RESULT_TOP=/opt/crosstools
4.修改 gcc-3.4.5-glibc-2.3.6.dat
gedit gcc-3.4.5-glibc-2.3.6.dat:
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.26.5
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.8
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.2.6.12.0
5.编译:
./arm-softfloat.sh
慢慢等待吧...
最后在/opt/crosstool/gcc-3.4.1-glibc-2.3.6/下就能得到工具链
如果你严格按照以上步骤执行那么编译中唯一出现的问题是:
make[2]: *** [/home/pengly/source-packet/cross/crosstool-0.43/build/arm-linux-gnu/gcc-4.1.0-glibc-2.3.2/build- glibc/csu/version.o] 错误 1
make[2]:正在离开目录 `/home/pengly/source-packet/cross/crosstool-0.43/build/arm-linux-gnu/gcc-4.1.0-glibc- 2.3.2/glibc-2.3.2/csu'
make[1]: *** [csu/subdir_lib] 错误 2
make[1]:正在离开目录 `/home/pengly/source-packet/cross/crosstool-0.43/build/arm-linux-gnu/gcc-4.1.0-glibc- 2.3.2/glibc-2.3.2'
make: *** [all] 错误 2
解决方案:
修改如下文件:
gedit build/arm-linux-gnu/gcc-4.1.0-glibc-2.3.2/build-glibc/csu/version-info.h
"Available extensions:/n"
"/n"
gedit Demo-arm.sh
在工具链版本后加 --notest --nounpack
由于博客限制不能将制作好的工具链上传,需要的朋友请在博客上留下联系方式。
- 支持浮点运算功能的交叉编译工具链的制作
- PowerPC交叉编译工具链的制作
- powerpc交叉编译工具链的制作
- arm交叉编译工具链的制作
- ARM交叉编译工具链的制作
- 制作自己的交叉编译工具
- Linux交叉编译工具的制作相关
- 制作交叉编译工具链的方法总结(详细)
- arm linux uclibc交叉编译工具链的制作
- 制作交叉编译工具链的方法总结
- DM644x达芬奇平台交叉编译工具链的制作
- arm linux uclibc交叉编译工具链的制作
- 制作好的交叉编译工具链下载及使用
- HISI3516A与HISI3519支持的交叉编译工具链
- 制作交叉编译工具链
- 交叉编译工具链制作
- 制作交叉编译编译工具链
- 嵌入式Linux下常用的交叉编译制作工具
- 微软Chart控件导学--渲染图表
- IE9的 InPrivate 和 SmartScreen 功能大揭秘
- larbin中两个wait队列的功能
- eclipse中编程创建一个java项目
- 关于Linux的若干介绍
- 支持浮点运算功能的交叉编译工具链的制作
- 2010年经典语录(有图有真相)
- C# 读取Excel文件
- 包子算法之我见
- /etc/shadow --shadowed password file
- 在DataGridView控件中实现冻结列分界线
- 带条件编译的包
- HTTP 返回代码含义
- 开通博客,学习计算机编程知识