1、首先设置好环境变量,命令为:
export PATH= /usr/local/arm/arm-2009q1/bin:$PATH
查看环境变量命令为:
echo $PATH
输出编译器的路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2009q1/bin:/usr/local/arm/arm-2009q1/bin
可输入arm-none-linux-gnueabi-gcc -v,若能看到版本号则证明安装成功。
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}' --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q1-203' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/obj/host-libs-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/obj/host-libs-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/mitchell/builds/4.3-arm-none-linux-gnueabi-respin/lite/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)
bbxm@ubuntu:~$
2、内核编译
进入内核压缩包所在的文件夹,解压源码包
sudo tar jxvf linux-03.00.01.06.tar.bz2
cd linux-03.00.01.06进入源码目录
修改Makefile文件
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= arm
CROSS_COMPILE ?=
清除原配置:
make ARCH=arm distclean
载入设置好的配置文件: make ARCH=arm omap3_stalker_defconfig
编译内核:
输入命令make ARCH=arm出现下面错误
CHK include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CC kernel/bounds.s
cc1: error: unrecognized command line option "-mlittle-endian"
cc1: error: unrecognized command line option "-mabi=aapcs-linux"
cc1: error: unrecognized command line option "-mno-thumb-interwork"
kernel/bounds.c:1: error: bad value (armv5t) for -march= switch
kernel/bounds.c:1: error: bad value (armv5t) for -mtune= switch
make[1]: *** [kernel/bounds.s] Error 1
make: *** [prepare0] Error 2
输入命令 make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm 出现下面错误make: /usr/local/arm/arm-2009q1/bin/arm-none-linux-guneabi-gcc: Command not found
scripts/kconfig/conf -s arch/arm/Kconfig
make: /usr/local/arm/arm-2009q1/bin/arm-none-linux-guneabi-gcc: Command not found
CHK include/linux/version.h
UPD include/linux/version.h
Generating include/asm-arm/mach-types.h
CHK include/linux/utsrelease.h
UPD include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CC kernel/bounds.s
/bin/sh: 1: /usr/local/arm/arm-2009q1/bin/arm-none-linux-guneabi-gcc: not found
make[1]: *** [kernel/bounds.s] Error 127
make: *** [prepare0] Error 2
最后使用命令make CROSS_COMPILE=arm-none-linux-gnueabi-编译成功
3、输出uImage文件
make CROSS_COMPILE=arm-none-linux-gnueabi- uImage
编译完成输出一下信息,uImage在源码目录的arch/arm/boot/里面
Image Name: Linux-2.6.32
Created: Fri Mar 3 19:01:53 2017
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2912132 Bytes = 2843.88 kB = 2.78 MB
Load Address: 0x80008000
Entry Point: 0x80008000
Image arch/arm/boot/uImage is ready