- 论坛徽章:
- 0
|
2. 设置环境变量,准备源码及相关补丁
2.1 设置环境变量
arm@ubuntu:~$ vi ~/.bashrc
export PREFIX=/usr/local/arm/3.4.4
export TARGET=arm-linux
export SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=${PREFIX}/bin PATH
export SRC=/home/arm/dev_home/btools/tchain3.4.4
注意: 如果你已经安装过arm-linux-gcc,并且已经加入了环境变量中,将其从环境中去掉保证root用户和arm用户环境中没有arm-linux-gcc
2.2 准备源码包
2.2.1 binutils
名称:binutils-2.16.tar.gz
2.2.2 gcc
名称: gcc-3.4.4.tar.bz2
2.2.3 glibc
名称: glibc-2.3.5.tar.gz (我使用的是2.3.3)
glibc-linuxthreads-2.3.5.tar.gz (我使用的是2.3.3)
2.2.4 linux kernel
名称: linux-2.6.14.1.tar.bz2 (我使用的是2.6.16.1)
2.2.5 gdb
名称: gdb-6.4.tar.gz
2.3 准备补丁
2.3.1 ioperm.c.diff
作用: 打修正ioperm()函数
2.3.2 flow.c.diff
作用: 修改gcc一处bug
2.3.3 t-linux.diff
作用: 该补丁用于产生crti.o和crtn.o文件.
2.4 编译GNU binutils
重新以arm用户登陆,让新设置得环境变量起作用
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ tree -L 1
.
|-- BUILD
|-- binutils-2.16
|-- binutils-2.16.tar.gz
|-- flow.c.diff
|-- gcc-3.4.4
|-- gcc-3.4.4.tar.bz2
|-- gdb-6.4.tar.gz
|-- glibc-2.3.5
|-- glibc-2.3.5.tar.gz
|-- glibc-linuxthreads-2.3.5.tar.gz
|-- ioperm.c.diff
|-- linux-2.6.14.1.tar.bz2
`-- t-linux.diff
arm@ubuntu:~$ su arm
arm@ubuntu:~$ cd ${SRC}
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ tar zxvf binutils-2.16.tar.gz
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ mkdir -p BUILD/binutils-2.16 (我使用的命令是 mkdir -p BUILD/x/binutils-2.16)
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ cd BUILD/binutils-2.16 (我使用的命令是 cd BUILD/x/binutils-2.16 )
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ ../../binutils-2.16/configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT}
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ make
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ su root
root@ubuntu:/home/arm/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16#make install
root@ubuntu:/home/arm/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16# exit
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$
////////以上都正常
2.5 准备内核头文件
2.5.1 使用当前平台的gcc编译内核头文件
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ cd ${KERNEL}
(这个环境变量在前面.bashrc中没有被定义,我是直接 cd~/dev_home/kernel)
arm@ubuntu:~/dev_home/kernel$
arm@ubuntu:~/dev_home/kernel$ tar jxvf ../btools/tchain3.4.4/linux-2.6.14.1.tar.bz2
arm@ubuntu:~/dev_home/kernel$ cd linux-2.6.14.1/
arm@ubuntu:~/dev_home/kernel/linux-2.6.14.1$ cp arch/arm/configs/smdk2410_defconfig .config(没使用)
本人是用的CPU是S3C2410,选择了一个配置文件smdk2410_defconfig,你可以根据你的需要选择
arm@ubuntu:~/dev_home/kernel/linux-2.6.14.1$ make ARCH=arm menuconfig (我是使用 make ARCH=arm menuconfig 进入设置界面后)
System Type --->
ARM system type (Samsung S3C2410) ---> 设置成 Samsung S3C2410
S3C24XX Implementations ---> 进入S3C24XX Implementations 选择了 SMDK2410/A9M2410
[ ] Simtec Electronics ANUBIS
[ ] Simtec Electronics BAST (EB2410ITX)
[ ] IPAQ H1940
[ ] Acer N30
SMDK2410/A9M2410
[ ] SMDK2440
[ ] Thorcom VR1000
[ ] HP iPAQ rx3715
[ ] NexVision OTOM Board
[ ] NexVision NEXCODER 2440 Light Board
--- S3C2410 Boot
--- S3C2410 Setup
[ ] S3C2410 DMA support
(0) S3C2410 UART to use for low-level messages
--- Processor Type
--- Processor Features
Support Thumb user binaries
选择了Support Thumbuser binarie
[ ] Disable I-Cache
[ ] Disable D-Cache
[ ] Force write through D-cache
退出时
Do you wish to save your new kernel configuration?
No >
选择Yes
选择YES保存
之后出现如下语句:
scripts/kconfig/mconf arch/arm/kconfig
#
#using defaults found in .config
#
#End of Linux kernel configuration
#Execute 'make' to build the kernel or try 'make help'
make[1]:execvp:arm-linuxgcc:权限不够
make[1]:execvp:arm-linuxgcc:权限不够
如果再执行make命令会出现如下语句:
make:execvp:arm-linuxgcc:权限不够
CHK include/linux/version.h
SPLIT include/linux/autoconf.h ->include/asm-arm/arch-s3c2410
make[1]:"include/asm-arm/mach-types.h"是最新的
CC arch/arm/kernel/asm-offset.s
/bin/sh:arm-linuxgcc:命令没有被发现
make[1]:[arch/arm/kernel/asm-offset.s] 错误127
make:[preapare0] 错误2
问题比较多,由于想自己建立一个交叉环境故而较麻烦,如能回答感激不敬。 |
|