大家好:我是才学习linux的菜鸟,按照一个参考文档开始编译binutils遇到了问题,请大家帮忙看看为啥!
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
后出现问题如下:
...
checking host system type ... i386-pc-linux-gnu
checking target system type ... config.sub:too many arguments
Try 'config.sub --help' for more information
configure:error:/bin/sh ../../../binutils-2.16/bfd ../config.sub arm-linux --with-sysroot=/usr/local/arm/gcc-3.4.4/sysroot filed
make:*** [configure-bfd] Error 1