|
这几天弄到一块SmartARM2200开发板,可惜相应的光盘找不到了,于是想自行建立uClinux环境及其交叉编译环境,以下是我建立交叉编译器的过程及其遇到的问题:
1、 从网站上下载最新版的cygwin,然后选择全部安装,将其安装到d:\cygwin中;
2、 修改cygwin的环境,这里我参考网上有关文章做了如下的修改:
1) 在d:\cygwin\cygwin.bat中加入set CYGWIN=title ntea
2) 在d:\cygwin\usr\X11R6\bin\startwin.bat中加入
set CYGWIN=ntea
SET DISPLAY=127.0.0.1:0.0
3) 修改sh.exe
cd /bin
mv sh.exe sh-original.exe
ln –s bash.exe sh.exe
3、 从www.uclinux.org网上下载下 ... 件/uclinux下:
1) uClinux源码:uClinux-dist-20051110.tar.gz
2) Toolchain源码:binutils-2.10.tar.bz2,binutils-2.10-full.patch,build-uclinux-tools.sh,elf2flt-20030314.tar.gz,elf2flt-cygwin-020612.patch,gcc -2.95.3.tar.gz,gcc-2.95.3-arm-mlib.patch,gcc-2.95.3-arm-pic.patch,gcc- 2.95.3-arm-pic.patch2,gcc-2.95.3-cygwin-020611.patch,gcc-2.95.3- full.patch,gcc-2.95.3-m68k-zext.patch,gcc-2.95.3-sigset.patch,genromfs- 0.5.1.tar.gz,genromfs-0.5.1-cygwin-020605.patch,STLport-4.5.3.patch, STLport-4.5.3.tar.gz,uClibc-0.9.19.patch.gz,uClibc-20030314.tar.gz
4、 在/uclinux中执行如下如下命令:
tar xzvf uClinux-dist-20051110.tar.gz
cd uClinux-dist
make xconfig
修改了几个选项:vendor/product选择Philips,kernel version选择linux-2.4.x,libc version选择uClibc,default all settings选择y,其余的保持不变
make dep
出错提示:
…………
make[1]: arm-elf-gcc: Command not found
…………
我不予理睬,让其继续进行!!!
5、vi build-uclinux-tools.sh,作如下修改:
#############################################################
#
# EDIT these to suit your system and source locations
#
MAKE=make
PATCH=patch
ELF2FLT="$BASEDIR/elf2flt"
UCLIBC="$BASEDIR/uClinux-dist/uClibc"
KERNEL="$BASEDIR/uClinux-dist/linux-2.4.x"
# KERNEL="$BASEDIR/uClinux-2.0.x"
# TARGET=m68k-elf
TARGET=arm-elf
# set your install directory here and add the correct PATH
PREFIX=/usr/local/
PATH="${PREFIX}/binPATH"; export PATH
# uncomment the following line to build for Cygwin
# you may also need to include your PATCH path specifically
CYGWIN=cygwin-
# PATCH=/usr/bin/patch
#############################################################
另外,阅读该脚本文件,发现在前面下载的文件中,elf2flt-cygwin-020612.patch并未被处理,既然如此,那www.uclinux.org中提供的工 ... 不知为什么?
6、在/uclinux下执行./build-uclinux-tools.sh build 2>&1 | tee build_toolchain.txt,但当编译到STAGE3时却告诉我/uclinux/uClinux- dist/uClibc/extra/Configs/Config.arm.default找不到,于是将目录底下的Config.arm拷贝成Config.arm.default,敲入命令./build-uclinux-tools.sh continue 2>&1 | tee -a build_toolchain.txt继续进行,过一会将有提示选择一些(Y/N)的东西,过程中另有提示说/bin/sh下找不到arm-elf-gcc命令,我不予理睬,让其进行,结果终于看到STAGE 3 -complete的提示:)
7、运行到 STAGE 7时问题又来了,这次是直接出错跳出:
………………
make[1]: Entering directory `/uclinux/arm-elf-gcc/libiberty'
if [ x"no" = xyes ] && [ ! -d pic ]; then \
mkdir pic; \
else true; fi
touch stamp-picdir
test x"no" != xyes || \
gcc -c -DHAVE_CONFIG_H -Dlinux -D__linux__ -Dunix -I. -I../../gcc-2.95.3/libiberty/../include ../../gcc-2.95.3/libiberty/argv.c -o pic/argv.o
gcc -c -DHAVE_CONFIG_H -Dlinux -D__linux__ -Dunix -I. -I../../gcc-2.95.3/libiberty/../include ../../gcc-2.95.3/libiberty/argv.c
test x"no" != xyes || \
gcc -c -DHAVE_CONFIG_H -Dlinux -D__linux__ -Dunix -I. -I../../gcc-2.95.3/libiberty/../include ../../gcc-2.95.3/libiberty/choose-temp.c -o pic/choose-temp.o
gcc -c -DHAVE_CONFIG_H -Dlinux -D__linux__ -Dunix -I. -I../../gcc-2.95.3/libiberty/../include ../../gcc-2.95.3/libiberty/choose-temp.c
In file included from /usr/include/sys/types.h:372,
from /usr/include/stdio.h:46,
from ../../gcc-2.95.3/libiberty/choose-temp.c:29:
/usr/include/cygwin/types.h:43: error: parse error before "loff_t"
make[1]: *** [choose-temp.o] Error 1
make[1]: Leaving directory `/uclinux/arm-elf-gcc/libiberty'
make: *** [all-libiberty] Error 2
………………
这是为什么呢?
有哪位能帮我找出这个困惑我好几天的疑团吗?非常感谢! |
|