嵌入式linux 交叉编译,嵌入式linux-arm交叉编译工具链的构建

原标题:嵌入式linux-arm交叉编译工具链的构建

第一步:首先下载如下源文件

binutils-2.16. tar.gz,gcc-3.4.4.tar.bz2, t-linux.diff, glibc-2.3.5.tar.gz, glibc-linuxthreads-2.3.5.tar.gz, ioperm.c.diff, linux-2.6.11.12tar.gz 并且把所有的源文件放入/home/zmj/usr/ /src文件夹中,其中zmj是用户名。并把如下脚本,写入一个文件,例如文件名为buildchain.sh,并把该文件放入usr目录下。

第二步: 运行buildchain.sh脚本即可。其中第七步是不需要的,将来自己编译内核的时候还要重新配置,故可以删去。

#!/bin/bash

# Setup

PREFIX=/home/zmj/usr/arm

TARGET=arm-unknown-linux-gnu

SYSROOT=${PREFIX}/sysroot

export ARCH=arm

export CROSS_COMPILE=${TARGET}-

export PATH=$PATH:${PREFIX}/bin

mkdir -p ${PREFIX}/src

## Get the sources

#

#cd ${PREFIX}/src

#tar xvfz binutils-2.16.tar.gz

#mkdir -p BUILD/binutils-2.16

#cd BUILD/binutils-2.16

# ../../binutils-2.16/configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT} 2>&1 | tee configure.out

#make 2>&1 | tee make.out

#make install 2>&1 | tee -a make.out

#

# Linux Kernel Headers

#cd ${PREFIX}/src

#tar xvfz linux-2.6.11.12.tar.gz

#ln -s linux-2.6.11.12 linux

#cd linux

#make ARCH=arm CROSS_COMPILE=${CROSS_COMPILE} menuconfig

#make include/linux/version.h

#mkdir -p ${SYSROOT}/usr/include

#cp -a ${PREFIX}/src/linux/include/linux ${SYSROOT}/usr/include/linux

#cp -a ${PREFIX}/src/linux/include/asm-arm ${SYSROOT}/usr/include/asm

#cp -a ${PREFIX}/src/linux/include/asm-generic ${SYSROOT}/usr/include/asm-generic

##

## Glibc headers

#

#cd ${PREFIX}/src

##tar xvfz glibc-2.3.5.tar.gz

##patch -d glibc-2.3.5 -p1

#cd glibc-2.3.5

##tar xvfj ../glibc-linuxthreads-2.3.5.tar.gz

#cd ..

#mkdir BUILD/glibc-2.3.5-headers

#cd BUILD/glibc-2.3.5-headers

#../../glibc-2.3.5/configure --prefix=/usr --host=${TARGET} --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out

#make cross-compiling=yes install_root=${SYSROOT} install-headers 2>&1 | tee make.out

#touch ${SYSROOT}/usr/include/gnu/stubs.h

#touch ${SYSROOT}/usr/include/bits/stdio_lim.h

#

# Step 4: stage 1 gcc

#

#cd ${PREFIX}/src

#bunzip2 -c gcc-3.4.4.tar.bz2 | tar xvf -

#patch -d gcc-3.4.4 -p1 < flow.c.diff

#patch -d gcc-3.4.4 -p1 < t-linux.diff

#mkdir -p BUILD/gcc-3.4.4-stage1

#cd BUILD/gcc-3.4.4-stage1

#../../gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT} 2>&1 | tee configure.out

#make 2>&1 | tee make.out

#make install 2>&1 | tee -a make.out

#

# Step 5: glibc

#cd ${PREFIX}/src

#mkdir BUILD/glibc-2.3.5

#cd BUILD/glibc-2.3.5

#BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.3.5/configure --prefix=/usr --build=i686-pc-linux-gnu --host=arm-unknown-linux-gnu --target=arm-unknown-linux-gnu --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out

#

#make 2>&1 | tee make.out

#make install_root=${SYSROOT} install

# Step 6: stage 2 gcc

#cd ${PREFIX}/src

#mkdir BUILD/gcc-3.4.4

#cd BUILD/gcc-3.4.4

#../../gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c,c++ --with-sysroot=${SYSROOT} 2>&1 | tee configure.out

#make 2>&1 | tee make.out

#make install 2>&1 | tee -a make.out

#cd ../..

# Step 7: Linux kernel

cd ${PREFIX}/src/linux

make zImage

make modules

make INSTALL_MOD_PATH=${SYSROOT} modules_install

注意 :文中的大部分#号是自己当初为了分步编译差错方便而屏蔽掉的部分。自己编译的时候可以去掉。顺便说一下我是在suse环境下建立这个 环境的,内核是2.6以上的版本,其中—build=i686-pc-linux-gnu。

几个简单的命令: :set nu 显示文本行号。 :1,5s/^/#/g可以在文本的1~5行添加一个#号,也即屏蔽掉这几行。1,5s/^#//g去掉文本1~5行文本开头的#号。

第三步 测试程序Helloworld.c

#include《stdio.h》

int main( )

{

printf(“Hello ,world!\n”);

return 0;

}

可以在脚本中/etc/bash.bashrc中写入环境变量,也可以直接写如下:

export PATH=/home/zmj/usr/arm/arm/bin:$PATH 其中bin中存放的是自己交叉编译器的路径。

cd ..到helloworld.c的目录。# arm-unknown-linux-gnu-gcc helloworld.c完毕!

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值