- 论坛徽章:
- 0
|
曾经看了一本关于嵌入式系统的书(不好意思,书名忘了),其中介绍了如何建立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、完整工具链设置
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 |
|