免费注册 查看新帖 |

Chinaunix

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

建立arm-linux交叉编译环境 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-29 13:06 |只看该作者 |倒序浏览

                                                                                    曾经看了一本关于嵌入式系统的书(不好意思,书名忘了),其中介绍了如何建立arm-linux交叉编译环境,现归纳如下:
1、准备工作:
建立如下目录:
主目录:arm-linux
其下子目录:setup_dir(存放下载的源文件),src_dir(存放解压后的源文件),kernel(内核),build_dir/build_binutils build_gcc build_glibc(编译目录),tool_chain(交叉编译工具链),program,doc。
下载以下所需文件到setup_dir:
http://ftp.gnu.org/gnu/binutils/binutils-2.11.tar.gz;
http://ftp.gnu.org/gnu/glibc-2.2.4.tar.gz;
http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz;
http://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz;
http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz;
http:ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz.
设置环境变量:
在doc目录下,建立如下bash文件,并执行
#! /bin/bash
PRJROOT=~/arm-linux
TARGET=arm-linux
PREFIX=$PRJROOT/tool-chain
TARGET_PREFIX=$PREFIX/$TARGET
PATH=$PREFIX/bin:$PATH
2、内核部分
  • 解压内核到kernel子目录;
  • 进入kernel目录,打补丁:patch -p1
  • 配置:
    make prproper
    make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
    make dep
  • 拷贝头文件
    cd ~/kernel/linux-2.4.21/include
    ln -s asm-arm asm
    cd asm
    ln -s arch-epxa arch
    ln -s proc-armv proc
    mkdir -p $TARGET_PREFIX/include
    cp -r ~/linux-2.4.21/include/linux  $TARGET_PREFIX/include
    cp -r ~/linux-2.4.21/include/asm-arm $TARGET_PREFIX/include/asm
3、binutils
  • 解压binutils-2.11.2.tar.gz到build_dir/build_binutils目录
  • 进入build_binutils,./configure --target=$TARGET --prefix=$PREFIX --disable-threads
  • make ; make install
4、建立初始gcc
  • 解压gcc-core-2.95.3到build_dir/build_gcc目录
  • 进入build_gcc,CC=gcc32(要先安装compat-gcc-32) ./configure --target=$TARGET --prefix=$PREFIX --disable-threads
  • make ; make install
5、建立库
  • 解压glibc-2.2.4.tar.gz到~/src_dir,解压glibc-linuxthreads-2.2.4到~src/glibc-2.2.4
  • cd ~/build_libc
  • CC=arm-linux-gcc ~/glibc-2.2.4/configure --host=$TARGET --prefix="/usr" --enable-add-ons with-headers=$TARGET_PREFIX/include
  • make
  • make install_root=$TARGET_PREFIX prefix="" instll
  • cd $/TARGET_PREFIX/lib
  • cp libc.so libc.so.org
  • 编辑libc.so: GROUP ( libc.so.6 libc_nonshared.a )
6、完整gcc编译器设置
  • cd ~/build-gcc
  • ~/src_dir/gcc-2.95.3/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++
  • make ; make install
7、完整工具链设置
  • 是否为bin文件
       file as ar gcc ld nm ranlib trip
  • 检查缺省搜索路径
        arm-linux-gcc -print-search-dirs
  • mv ar as ... trip $PREFIX/lib/gcc-lib/arm-linux/2.95.3/
  • for file in as ar ... trip
    >do
    >ln -s $PREFIX/lib/gcc-lib/arm-linux/2.95.3/$file
    >done
               
               
               
               
               
               
               
               
               
               

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP