Preface
前面编译linux内核的时候,用各种cross版本都不行啊,真是纠结,于是就想着自己也要会编译交叉工具的方法,然后各种尝试,各种问题啊,最后还是没解决(还有其它事情),步骤我都走熟了,记下来吧
Preparation
root@lcw:/home/mystery/cross_toolchain# ls binutils-2.15.tar.bz2 glibc-2.3.2.tar.bz2 crosstool-0.43 glibc-linuxthreads-2.3.2.tar.bz2 crosstool-0.43.tar.gz linux-2.6.14.tar.bz2 gcc-4.1.0.tar.bz2 linux-libc-headers-2.6.12.0.tar.bz2
后面还下载了gdb-6.5.tar.bz2
Step1当然是解压crosstool-0.42.tar.gzStep2我们需要自己配置文件,我取名为arm.sh< arm.sh>#!/bin/sh set -ex TARBALLS_DIR=/home/mystery/cross_toolchain/crossTools # 定义工具链源码所存放位置。 RESULT_TOP=/opt/crosstool # 定义工具链的安装目录 export TARBALLS_DIR RESULT_TOP GCC_LANGUAGES="c,c++" # 定义支持C, C++语言 export GCC_LANGUAGES # 创建/opt/crosstool目录 mkdir -p $RESULT_TOP # 编译工具链,该过程需要数小时完成。 eval 'cat arm.dat gcc-4.1.0-glibc-2.3.2.dat' sh all.sh --notest echo Done.
Step3
我们还需要改二个配置文件gcc-4.1.0-glibc-2.3.2.dat与arm.dat,这个根据自己下载的文件需要来改<gcc-4.1.0-glibc-2.3.2.dat> BINUTILS_DIR=binutils-2.15 GCC_DIR=gcc-3.3.6 GLIBC_DIR=glibc-2.3.2 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2 LINUX_DIR=linux-2.6.14 LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
<arm.dat>
KERNELCONFIG='pwd'/arm.config # 内核的配置 TARGET=arm-linux- # 编译生成的工具链名称 TARGET_CFLAGS="-O" # 编译选项
Step4
执行脚本,将Crosstool的脚本文件和配置文件准备好之后,开始执行arm.sh脚本来编译交叉编译工具。如果顺利的话,这步经过数个小时后,就能生成交叉编译工具了,数个小时啊,准备迎接各种error吧
<Question1>
+ abort Don't run all.sh or crosstool.sh as root, it's dangerous + echo Don't run all.sh or crosstool.sh as root, it's dangerous Don't run all.sh or crosstool.sh as root, it's dangerous
<Solution>:这脚本够纠结的,用普通帐户时,执行命令又权限不够,用root帐户,又不让你运行,那么
不用root帐户又有权限的办法就是chmod,自己给自己权限吧,我是chmod+chgrp+chown都改了
<Question2