arm交叉编译环境的patch(gcc-4.2.1,glibc-2.6.1,binutils-2.18, little-endian)

来源:互联网 发布:淘宝虚拟店铺不能开了 编辑:程序博客网 时间:2024/05/21 17:16

 不要使用root进行编译,根本就不行,而且很危险(会删除目标目录下的所有东西的)。

1)url: http://www.kegel.com/crosstool/,下载crosstool-0.43.tar.gz,解压缩。

2)给源代码打补丁:
$ cd crosstool-0.43 && patch -p1 < ../diff.txt

3)修改编译脚本:
$ vi latest-earm.sh
将倒数第三行的--nounpack去掉。由于调试的时候不希望每次都解压源代码。
TARBALLS_DIR=/var/ftp/incoming/linux/dev_tools/downloads #希望源代码保存的位置。crosstool会在指定的目录下进行查看,如果发现有源代码,是不会在网络上下载的,如果没有的话,会自动连接几个镜像网站进行尝试下载。我一般喜欢用个多线程的工具将源代码全都下载下来,放到一个目录中待以后使用。
RESULT_TOP=/opt/crosstool #生成的二进制文件的保存位置。
export TARBALLS_DIR RESULT_TOP #导出环境变量。
GCC_LANGUAGES="c,c++" # 支持的语言类型
export GCC_LANGUAGES # 导出

PARALLELMFLAGS=-j3 # 如果是个多核的cpu,改大一些,原来看过一个公式,好像是ncpu * 2 +1
export PARALLELMFLAGS # 导出

# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP #要确认你有权限网这个目录里面写东西,我是先用的root用户建了一个目录,改了一个所有权限。

# Build the toolchain. Takes a couple hours and a couple gigabytes.
eval `cat earm.dat gcc-4.2.1-glibc-2.6.1-tls.dat` sh all.sh --notest --nounpack # 第一次编译,去掉--nounpack,否则不能解压,我当初为了调试方便。 :)
# `cat earm.datgcc-4.2.1-glibc-2.6.1-tls.dat`这一部分表示我现在使用的是哪一个arm的配置,并且希望的gcc和glibc。我只是将这个gcc-4.2.1-glibc-2.6.1-tls.dat调试过去了,其他的还真没有试。

4)创建目标目录,同时修改所有者。
$ mkdir /opt/crosstool && sudo chown arm.arm /opt/crosstool

5)好了,可以运行脚本了
$./latest-earm.sh
等个八个小时就差不多了。

6)修改权限,以防误操作。
$cd /opt/crosstool && sudo chown root.root * -R #依个人设置而定