ubuntu10.04全过程创建交叉编译环境

  • 格式:doc
  • 大小:40.00 KB
  • 文档页数:4

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ubuntu10.04下建立交叉编译工具链(支持软浮点)全过程

参考了网上的不少的资料,花了五个小时终于完成了,记录下全过程供大家分享。

用到的源码包如下,建议新手全部放在/home/usr/downloads/ 目录下。以下操作在用户权限下进行。

=======================================================================

arm-linux-gcc-3.4.1.tar.gz

glibc-2.3.3.tar.gz

linux-2.6.8.tar.gz

crosstool-0.43.tar.gz

binutils-2.15.tar.gz

glibc-linuxthreads-2.3.3.tar.gz

binutils-2.18.tar.gz --安装用

编译一次至少要花半个小时,如果因为依赖软件没有安装中途会报错退出,只有从头再来,那样很浪费时间的。

sudo apt-get install bison flex build-essential patch libncurses5-dev

由于ubuntu10.04自带的ld ,as版本太高的原因,需要安装binutils的2.18版本,然后替换系统中的2.20版本。方法如下:

$cd downloads

$tar xzvf binutils-2.18.tar.gz

$cd binutils-2.18

$./configure --prefix=/tmp/binutils --disable-nls (-prefix后面的是生成可执行文件存放的位置可以自己定义)

$make all

$make install

编译成功后在/tmp/binutils/bin/中就生成了ld和as程序的可执行文件

重新链接/usr/bin/ld 和/usr/bin/as文件

$sudo rm /usr/bin/ld /usr/bin/as //删除2.20的ld,as

$sudo ln –s /tmp/binutils/bin/ld /usr/bin/

$sudo ln –s /tmp/binutils/bin/as /usr/bin/

然后可运行ld –v 和as –v 查看版本是否为2.18。

安装2.18版本可解决出现的 ld as " version too old "问题。

2. ubuntu10.04下默认的GCC版本是4.4.3,但这个不是版本越高越好,版本太高,对语法什么的要求也高,编译不成功,降低版本吧:

#sudo apt-get install gcc-4.1 //安装4.1的GCC,需要联网

#sudo rm /usr/bin/gcc //删除之前4.4.3的快捷方式,4.4.3的GCC并未删除#sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc //建立4.1的快捷方式

这是由于crosstool中定义了GCC的版本的上下线,最高也就到4.1,在其配置的时候会对这个版本信息进行检测,不在其规定范围就报错了。

3.修改sh版本

如果运行

ls -la /bin/sh

看到链接的是 dash ,则请运行以下命令

sudo dpkg-reconfigure dash

选择 no 以删除 dash

此处如果不改好的话,编译时会出现错误

(在建立交叉编译环境后,可以在运行该命令选择yes重新安装dash)。

4. 解压crosstool-0.43源码包,修改配置文件。

$tar xzvf crosstool-0.43.tar.gz

$cd crosstool-0.43 //下面的操作路径都在此文件夹

$cp demo-arm-softfloat.sh arm-softfloat.sh //复制并建立新文件arm-softfloat.sh $gedit arm-softfloat.sh //用文本编辑器打开,也可用vim打开。

修改文件中的内容:

TARBALLS_DIR=$HOME/downloads //表示下载的源码的存放目录

RESULT_TOP=/opt/crosstools //表示生成的工具链的存放目录

为:

TARBALLS_DIR=/home/usr/downloads(源码存放目录)

RESULT_TOP=/home/usr/crosstools(生成工具链目录)若使用默认位置安装的话会因为权限问题出错。

修改这一句:eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notest //红色为自己所选的GCC和GLIBC的版本号,可以根据自己的实际情况进行修改。

再修改 gcc-3.4.1-glibc-2.3.3.dat文件,过程如下:

$gedit gcc-3.4.1-glibc-2.3.3.dat

修改后内容为:

BINUTILS_DIR=binutils-2.15

GCC_DIR=gcc-3.4.1

GLIBC_DIR=glibc-2.3.3

LINUX_DIR=linux-2.6.8

GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.3

注意自己的工具的版本最好和这里是对应的,省的编译器找不到报错或是连网下载浪费时间。

再修改arm.dat

$gedit arm.dat

修改为:

KERNELCONFIG=`pwd`/arm.config

TARGET=arm-softfloat-linux-gnu

TARGET_CFLAGS="-o"

5. 将linux-2.

6.8源码包目录下的/script/kconfig/mconf.c中的91行

static struct menu *current_menu;

改为

struct menu *current_menu;

这样是为了解决"*current_menu"相关的错误。