在Fedora 7 环境下配置ARM Linux 交叉编译 工具(转)

在Fedora 7 环境下配置ARM Linux 交叉编译 工具

1、从http://kegel.com/crosstool处下载crosstool-0.43.tar.gz放到/HOME下,并解压:tar -zxvf crosstool-0.43.tar.gz

假如你想要arm9tdmi上的工具链(其它工具链方法相同),进入crosstool-0.43目录,用文本编辑器打开demo-arm.sh,内容如下:

#!/bin/sh

# This script. has one line for each known working toolchain

# for this architecture. Uncomment the one you want.

# Generated by generate-demo.pl from buildlogs/all.dats.txtset -ex

TARBALLS_DIR=$HOME/downloads  //该行表示你即将下载的工具源码压缩包的存放目录!

RESULT_TOP=/opt/crosstool //该行表示将要生成的工具链的存放目录,最好改到有写权限的目录!opt:相当windows里的C:/Program file;

export TARBALLS_DIR RESULT_TOP

GCC_LANGUAGES="c,c++"     //该行表示将要生成的工具链支持的语言的种类!

export GCC_LANGUAGES

# 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

#eval `cat arm.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest

#eval `cat arm.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.2.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest

#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.2.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.1.0-glibc-2.2.2.dat` sh all.sh --notest

#eval `cat arm.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest

eval `cat arm.datgcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest //我选的这行

echo down

上面表示你要选工具链的版本号!"#"起注释功能!我们可以选择一行!




打开crosstool-0.43目录下的arm9.dat文件,内容如下:

KERNELCONFIG=`pwd`/arm.config

TARGET=arm-unknown-linux-gnu

TARGET_CFLAGS="-O"这个文件一般用于设置一些变量,一般不用改,用默认即可!不过倒是可以将arm-unknown-linux-gnu改成arm-linux,到时候敲命令的时候也短些,所以我改了呵呵!

打开crosstool-0.43目录下的gcc-4.1.0-glibc-2.3.2-tls.dat文件(相信你也看到了,对应你上面选的),内容如下:

BINUTILS_DIR=binutils-2.16.1

GCC_CORE_DIR=gcc-3.3.6

GCC_DIR=gcc-4.1.0

GLIBC_DIR=glibc-2.3.2

LINUX_DIR=linux-2.6.15.4

LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2

GDB_DIR=gdb-6.5

GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread --enable-kernel=2.4.18"

然后到网上去下载上面红色标记的几个源码包,一般是下*.tar.bz2文件,(好像crosstool自己可以到网上搜索代码包,不过我用的迅雷下快些)。注意,不需要解压

如下我验证过的资源包地址:

binutils-2.16.1.tar.bz2ftp://ftp.gnu.org/gnu/binutils/binutils-2.16.1.tar.bz2
gcc-3.3.6.tar.bz2ftp://ftp.ntu.edu.tw/pub/gnu/gnu/gcc/gcc-3.3.6/gcc-3.3.6.tar.bz2
gcc-4.1.0.tar.bz2ftp://ftp.ntu.edu.tw/pub/gnu/gnu/gcc/gcc-4.1.0/gcc-4.1.0.tar.bz2
glibc-2.3.2.tar.bz2ftp://ftp.ntu.edu.tw/pub/gnu/gnu/glibc/glibc-2.3.2.tar.bz2
linux-2.6.15.4.tar.bz2ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.4.tar.bz2
linux-libc-headers-2.6.12.0.tar.bz2http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-2.6.12.0.tar.bz2
glibc-linuxthreads-2.3.2.tar.bz2ftp://ftp.ntu.edu.tw/pub/gnu/gnu/glibc/glibc-linuxthreads-2.3.2.tar.bz2

gdb-6.5.tar.bz2ftp://ftp.ntu.edu.tw/pub/gnu/gnu/gdb/gdb-6.5.tar.bz2


3、进入crosstool-0.43目录,输入./demo-arm.sh,照着网上兄弟说的,似乎也应该就成功了。可是却出现了下面的提示:(仅部分)

+ 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

看到了吧,人家不让在root用户下允许,说的是 " it's dangerous",

切换用户编译,一切OK。然后经过N(N>=4)小时的编译,就可以在你的/opt/crosstool目录中看到你想要的工具链,头文件,库文件等东东了!你可以把工具链所在目录加到环境变量PATH中: 终端中输入export PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH

vi /etc bashrc,现在就可以用了。编一个最简单的 hello.c,输入 arm-linux-gcc -o hello hello.c,然后 file hello,看到

hello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.18, dynamically linked (uses shared libs), for GNU/Linux 2.4.18, not stripped

说明成功了。但是现在还没有完全成功,如果你再打开一个终端,会提示你找不到 arm-linux-gcc命令,还需要在 /etc/bashrc 的最后一行下面添加上 export PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH

然后就OK

注意:crosstool -0.43目录下的PATCH目录中有各个工具链的补丁,如果在编译过程中有错误,可以在crosstool-0.43目录下build目录中的解压后的源文件中打上补丁(我没打补丁也编译成功了,呵呵)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值