Ubuntu 12.04 64bit GCC交叉编译器制作 原创

做嵌入式开发少不了跨平台操作,因此也少不了使用交叉编译器,我们可以自己动手制作属于我们自己的交叉编译器,其中可以定制一些东西,可以使之支持浮点运算等特殊要求。以下以适合嵌入式开发最常用的ARM平台的ARMGCC交叉编译器为例进行讲解:其他平台步骤和方法一样,只需在平台选择的时候作相应更改即可。 准备工作:

1.下载制作交叉编译环境的工具:crosstool(crosstool-0.43.tar.gz) 使用命令行下载

wget

2.下载编译过程需要用到的源代码:

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

说明:具体版本号可以有一些不同,后面说讲如何设置。

以上七个软件建议放在同一目录下,如~/linux/downloads 目录下。

3.编译过程需要用到以下几个软件,系统本身没有安装,可以运行安装命令提前做好,因为编译一次至少要花半个小时,如果因为依赖软件没有安装中途会报错退出,只有从头再来,那样很浪费时间的。

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

具体工作步骤:

1、修改系统配置

1.1 将GCC版本设置为4.1

Ubuntu 12.04 64bit 默认安装的 gcc 版本为4.6,这个版本对于语法要求较高,编译会出错,目前不宜选用,于是选择了gcc-4.1,但并不需要卸载gcc-4.6。

sudo apt-get install gcc-4.1 (目前新的都无法直接安装,需要自己下载gcc-4.1 手动安装,请参见Ubuntu 12.04 64bit 下安装编译GCC 4.1.2 绝对原创)

sudo rm /usr/bin/gcc (删除GCC,它只是个到gcc-4.6的软链接文件)

sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的软链接)

1.2 修改sh版本

如果运行 ls -la /bin/sh

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

sudo dpkg-reconfigure dash

选择 no 以删除 dash 此处如果不改好的话,,编译时会出现错误

2.解压软件包,并进入该目录,查看重要的脚本文件。

$cd downloads

$tar –zxvf crosstool-0.43.tar.gz

$cd crosstool-0.43

在此目录下可以看到有很多.sh脚本和.dat配置文件,每一个支持的处理器都有它所相应的脚本。假如选用demo-arm- softfloat.sh 就是建立目标为支持软浮点的arm交叉编译工具链。

3.修改demo-arm-softfloat.sh $vim demo-arm-softfloat.sh

修改下面两句

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

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

为:

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

RESULT_TOP=/home/linux/crosstools(生成工具链目录)

4.修改 gcc-3.4.5-glibc-2.3.6.dat $ vim 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.8

LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6

5 $ ./ demo-arm-softfloat.sh 这个过程较长(半个小时左右)

6. 修改环境变量 直接修改/home/linux/.bashrc cd /home/linux

vim .bashrc 在最后面添加如下内容:

PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin

然后 source .bashrc

7.执行如下命令$ arm-softfloat-linux-gnu-gcc -v

显示Reading specs from /home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs Configured with: /home/david/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure –target=arm-softfloat-linux-gnu –host=i686-host_pc-linux-gnu –prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu –with-float=soft –with-headers=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include –with-local-prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu –disable-nls –enable-threads=posix –enable-symvers=gnu –enable-__cxa_atexit –enable-languages=c,c++ –enable-shared –enable-c99 –enable-long-long hread model: posix gcc version 3.4.5ok交叉编译环境创建成功!

8.恢复我们修改的系统配置:

恢复gcc为4.6

sudo rm /usr/bin/gcc

sudo ln -s /usr/bin/gcc-4.6 /usr/bin/gcc

重新安装dash

sudo dpkg-reconfigure dash

选择 yes 以重新安装 dash

注意:

无论身处何处,只要有一颗放松而美好的心态,生活便是美好!

Ubuntu 12.04 64bit GCC交叉编译器制作 原创

相关文章:

你感兴趣的文章:

标签云: