标签:
wget http://www.kegel.com/crosstool/crosstool-0.43.tar.gz
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
sudo apt-get install bison flex build-essential patch libncurses5-dev
具体工作步骤:
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版本
sudo dpkg-reconfigure dash
选择 no 以删除 dash 此处如果不改好的话,编译时会出现错误
2.解压软件包,并进入该目录,查看重要的脚本文件。
RESULT_TOP=/opt/crosstools //表示生成的工具链的存放目录
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.5
ok交叉编译环境创建成功!
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
注意:
1.UBUNTU12.04 上工具链的编译执行./demo-arm-softflaot.sh过程中会出现下面的错误:编译过程中会出现:
*** "These critical programs are missing or too old" as ld
解决方法如下:
修改下面的文件:
vi ./build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/glibc-2.3.6/configure (就是把4425行的{ (exit 1); exit 1; };屏蔽掉,因为binuilts版本过低会造成异常退出)
将
4419 test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
4420 *** These critical programs are missing or too old:$critic_missing
4421 *** Check the INSTALL file for required versions." >&5
4422 echo "$as_me: error:
i
4423 *** These critical programs are missing or too old:$critic_missing
4424 *** Check the INSTALL file for required versions." >&2;}
{ (exit 1); exit 1; };}
改为:
4419 test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
4420 *** These critical programs are missing or too old:$critic_missing
4421 *** Check the INSTALL file for required versions." >&5
4422 echo "$as_me: error:
4423 *** These critical programs are missing or too old:$critic_missing
4424 *** Check the INSTALL file for required versions." >&2;}
#{ (exit 1); exit 1; };
}
在再次执行./demo-arm-softfloat.sh前,请在eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest 末尾处加--nounpack表示不重新解压安装包,目的是让安装过程继续进行,而不覆盖掉该configure问题以及以前的编译结果
再次执行:
./demo-arm-softfloat.sh
Ubuntu 12.04 64bit GCC交叉编译器制作 原创
标签:
原文地址:http://blog.csdn.net/cao527121128/article/details/44410077