免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1521 | 回复: 0
打印 上一主题 下一主题

在FC5下架设arm交叉编译平台 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-19 09:42 |只看该作者 |倒序浏览
一、准备文件和补丁
建立一个空的文件夹,下载下列文件:
http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz
http://ftp.gnu.org/gnu/gcc/gcc-3.4.6/gcc-3.4.6.tar.bz2
http://ftp.gnu.org/gnu/glibc/glibc-2.3.6.tar.bz2
http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.6.tar.bz2
http://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.9.tar.gz
以及补丁:
flow.c.diff:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3
http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff
http://frank.harvard.edu/~coldwell/toolchain/ioperm.c.diff
其中:
1. binutils写本文时最新的已经是2.6.17,但其中的as有bug,会导致后面的编译出现循环符号错误,所以暂时得用老的2.6.16
2. gcc4 stage1暂时没成功,但出来了交叉链接的glibc后就可以用来编译gcc4了。
3. 虽然kernel这里用的是写本文时最新的,但究其更新诉的,l可以尝试下更新的,但不保证后面不出现问题。
二、开始编译
过程很复杂,但我都写在一个脚本里了,如果你想知道详细步骤,看脚本就是了:
[color="#ff4500"]#!/bin/[color="#00ffff"]sh[color="#ff4500"]

[color="#87cefa"]dodo(){
    [color="#b0c4de"]eval [color="#ffa07a"]"$@"
    [ $[color="#eedd82"]? != 0 ] && [color="#b0c4de"]echo command failed. > /dev/tty && [color="#00ffff"]exit 1
}
[color="#ff4500"]##################################################
#set env
##################################################
[color="#eedd82"]TARGET=arm-linux
[color="#eedd82"]PREFIX=$[color="#eedd82"]HOME/bin/root/stow/arm
[color="#eedd82"]DISTDIR=/data/share/softwares/class/embed/arm
[color="#eedd82"]ARM_KERNEL_DECONFIG=at91rm9200dk_defconfig
[color="#eedd82"]SRCDIR=$[color="#eedd82"]PREFIX/src
[color="#eedd82"]BUILDDIR=$[color="#eedd82"]SRCDIR/BUILD
[color="#eedd82"]SYSROOT=$[color="#eedd82"]PREFIX/sysroot
[color="#eedd82"]PATH=$[color="#eedd82"]PREFIX/bin:$[color="#eedd82"]PATH
[color="#eedd82"]DIST_BINUTILS_VER=binutils-2.16
[color="#eedd82"]DIST_BINUTILS=$[color="#eedd82"]DIST_BINUTILS_VER.tar.gz
[color="#eedd82"]DIST_KERNEL_VER=linux-2.6.17.9
[color="#eedd82"]DIST_KERNEL=$[color="#eedd82"]DIST_KERNEL_VER.tar.gz
[color="#eedd82"]DIST_GLIBC_VER=glibc-2.3.6
[color="#eedd82"]DIST_GLIBC=$[color="#eedd82"]DIST_GLIBC_VER.tar.bz2
[color="#eedd82"]DIST_GLIBC_LT=glibc-linuxthreads-2.3.6.tar.bz2
[color="#eedd82"]DIST_GCC_VER=gcc-3.4.6
[color="#eedd82"]DIST_GCC=$[color="#eedd82"]DIST_GCC_VER.tar.bz2
[color="#ff4500"]##################################################
# build stuff
##################################################
[color="#b0c4de"]echo prepare...
rm -rf $[color="#eedd82"]PREFIX
mkdir -p $[color="#eedd82"]PREFIX
mkdir -p $[color="#eedd82"]SRCDIR
mkdir -p $[color="#eedd82"]BUILDDIR
[color="#b0c4de"]echo done.
[color="#b0c4de"]echo building binutils
tar zxf $[color="#eedd82"]DISTDIR/$[color="#eedd82"]DIST_BINUTILS -C $[color="#eedd82"]SRCDIR
mkdir -p $[color="#eedd82"]BUILDDIR/$[color="#eedd82"]DIST_BINUTILS_VER
[color="#b0c4de"]cd $[color="#eedd82"]BUILDDIR/$[color="#eedd82"]DIST_BINUTILS_VER
dodo ../../$[color="#eedd82"]DIST_BINUTILS_VER/configure --prefix=$[color="#eedd82"]PREFIX --target=$[color="#eedd82"]TARGET --with-sysroot=$[color="#eedd82"]SYSROOT &> configure.out
dodo make &> make.out
dodo make install &> make_inst.out
[color="#b0c4de"]echo done.
[color="#b0c4de"]echo preparing kernel headers
tar zxf $[color="#eedd82"]DISTDIR/$[color="#eedd82"]DIST_KERNEL -C $[color="#eedd82"]SRCDIR
[color="#b0c4de"]cd $[color="#eedd82"]SRCDIR/$[color="#eedd82"]DIST_KERNEL_VER
dodo make [color="#eedd82"]ARCH=arm $[color="#eedd82"]ARM_KERNEL_DECONFIG &>/dev/null
dodo make include/linux/version.h
dodo mkdir -p $[color="#eedd82"]SYSROOT/usr/include
dodo cp -a include/linux $[color="#eedd82"]SYSROOT/usr/include/linux
dodo cp -a include/asm-arm $[color="#eedd82"]SYSROOT/usr/include/asm
dodo cp -a include/asm-generic $[color="#eedd82"]SYSROOT/usr/include/asm-generic
[color="#b0c4de"]echo done.
[color="#b0c4de"]echo preparing glibc headers
tar jxf $[color="#eedd82"]DISTDIR/$[color="#eedd82"]DIST_GLIBC -C $[color="#eedd82"]SRCDIR
patch -d $[color="#eedd82"]SRCDIR/$[color="#eedd82"]DIST_GLIBC_VER -p1  configure.out
dodo make cross-compiling=yes [color="#eedd82"]install_root=$[color="#eedd82"]SYSROOT install-headers &> make_hinst.out
dodo touch $[color="#eedd82"]SYSROOT/usr/include/gnu/stubs.h
dodo touch $[color="#eedd82"]SYSROOT/usr/include/bits/stdio_lim.h
[color="#b0c4de"]echo done.
[color="#b0c4de"]echo building gcc stage 1
tar jxf $[color="#eedd82"]DISTDIR/$[color="#eedd82"]DIST_GCC -C $[color="#eedd82"]SRCDIR
patch -d $[color="#eedd82"]SRCDIR/$[color="#eedd82"]DIST_GCC_VER -p1  configue.out
dodo make &> make.out
dodo make install &> make_inst.out
[color="#b0c4de"]echo done.
[color="#b0c4de"]echo building glibc
[color="#b0c4de"]cd $[color="#eedd82"]BUILDDIR/$[color="#eedd82"]DIST_GLIBC_VER
dodo ../../glibc-2.3.6/configure --prefix=/usr --build=i386-redhat-linux --host=$[color="#eedd82"]TARGET --target=$[color="#eedd82"]TARGET --without-__thread --enable-add-ons=linuxthreads --with-headers=$[color="#eedd82"]SYSROOT/usr/include [color="#eedd82"]CFLAGS= [color="#eedd82"]CXXFLAGS= [color="#eedd82"]BUILD_CC=gcc [color="#eedd82"]CC=$[color="#eedd82"]TARGET-gcc [color="#eedd82"]AR=$[color="#eedd82"]TARGET-ar [color="#eedd82"]RANLIB=$[color="#eedd82"]TARGET-ranlib [color="#eedd82"]AS=$[color="#eedd82"]TARGET-as [color="#eedd82"]LD=$[color="#eedd82"]TARGET-ld &> configure.out
dodo make &> make.out
dodo make [color="#eedd82"]install_root=$[color="#eedd82"]SYSROOT install &> make_inst.out
[color="#b0c4de"]echo done.
[color="#b0c4de"]echo building gcc
mkdir -p $[color="#eedd82"]BUILDDIR/$[color="#eedd82"]DIST_GCC_VER
[color="#b0c4de"]cd $[color="#eedd82"]BUILDDIR/$[color="#eedd82"]DIST_GCC_VER
dodo ../../gcc-3.4.6/configure --prefix=$[color="#eedd82"]PREFIX --target=$[color="#eedd82"]TARGET --enable-languages=c --with-sysroot=$[color="#eedd82"]SYSROOT &> configue.out
dodo make &> make.out
dodo make install &> make_inst.out
[color="#b0c4de"]echo done.
其中你可以修改的变量是:
PREFIX 安装路径
DISTDIR 前面步骤下载文件的文件夹
ARM_KERNEL_DECONFIG 这个是默认配置的名字,在内核树的arch/arm/configs/下面有,我选择的是at91rm9200dk_defconfig,可以在skyeye下调试。
三、测试HelloWorld
成功后在PREFIX下面的bin目录下面应该就会有:
arm-linux-*工具链了。
然后去下载skyeye调试一个HelloWorld程序。
skyeye:
http://gro.clinux.org/frs/download.php/1700/skyeye-1.2-RC8.tar.bz2
HelloWorld:
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=82187
(好像要先注册linuxfans帐号才能下附件)
然后按照步骤安装skyeye
解压Hello World目录后,修改Makefile把里面的工具名称都改成相应的arm-linux-*。
make
然后skyeye -e hello
希望一切正常:DTags:
arm
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8057/showart_173310.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP