This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
I am compliling cross tool chain for ARM7TDMI, I choose binutils-2.10.1, gcc-2.95.3 and uClibc-0.9.26, the Linux kernel I use is Linux-2.4.20 and I patched with uClinux patch for this kernel.
My steps are as following:
1. set up workspace
1.1 create subdirectory in /home/zpf/haimai:
$ mkdir bootldr build-tools debug doc images kernel project rootfs sysapps tmp tools
bootldr: The bootloader or bootloaders for the target
build-tools The packages and directories needed to build the cross-platform development toolchain
debug: The debugging tools and all related packages
doc: All the documentation need for the project
images: The binary images of the bootloader, the kernel, and the root filesystem ready to be used on the target
kernel: The different kernel versions for the target
project: My own source code for this project
rootfs: The root filesystem as seen by the target's kernel at runtime
sysapps: The system applications required for the target
tmp: A temporary directory to experiment and store transient files
tools: The complete cross-platform development toolchain and C library
all packages downloaded are put in build-tools directory.
1.2 Write a shellscript haimai.sh to export environment variables:
export PROJECT=haimai
export PRJROOT=/home/zpf/${PROJECT}
export TARGET=arm-linux
export PREFIX=${PRJROOT}/tools
export TARGET_PREFIX=${PREFIX}/${TARGET}
export PATH=${PREFIX}/bin:${PATH}
cd $PRJROOT
2. kernel headers set up
download Linux kernel 2.4.20 from:
http://www.kernel.org/pub/linux/kernel/v2.4/
download kernel patch for uClinux from:
http://www.uClinux.org/pub/uClinux/uClinux-2.0.x/
unpack the kernel and patch to ${PRJROOT}/kernel, patch the kernel:
$ patch -p1 < uClinux-2.4.20-uc1.diff
then begin to configure the kernel, run make menuconfig:
$ make ARCH=armnommu CROSS_COMPILE=arm-linux- menuconfig
$ make dep
only select the CPU type during this step.
after this, copy the kernel head to ${TARGET_PREFIX}
$ mkdir -p ${TARGET_PREFIX}/include
$ cp -r include/linux/ ${TARGET_PREFIX}/include
$ cp -r include/asm-armnommu/ ${TARGET_PREFIX}/include/asm
$ cp -r include/asm-generic/ ${TARGET_PREFIX}/include
3. build binutils
$ ../binutils-2.10.1/configure --target=$TARGET --prefix=${PREFIX}
$ make
$ make install
after this step, binutils can be seen in ${PREFIX}/bin:
$ ls ${PREFIX}/bin
arm-linux-addr2line arm-linux-ld arm-linux-readelf
arm-linux-ar arm-linux-nm arm-linux-size
arm-linux-as arm-linux-objcopy arm-linux-strings
arm-linux-c++filt arm-linux-objdump arm-linux-strip
arm-linux-gasp arm-linux-ranlib
A copy of some of the utilities without the prepended target name is also installed in the ${PREFIX}/${TARGET}/bin directory.
4. build bootstrap gcc
$ ../gcc-2.95.3/configure --target=$TARGET --prefix=${PREFIX} --without-headers --with-newlib --enable-languages=c
this step seemed to have missed to copy some files to ${PREFIX}/${TARGET}/sys-include
so the next step go wrong:
$ make all ?gcc
error: something about pthread.h
To solve this problem, Edit gcc/config/arm/t-linux
and add
-Dinhibit_libc and -D__gthr_posix_h
to:
TARGET_LIBGCC2_CFLAGS.
After edition of the file ,run configure with disable-threads option:
$ ../gcc-2.95.3/configure --target=$TARGET --prefix=${PREFIX} --without-headers --with-newlib --enable-languages=c --disable-threads
then run:
$ make all-gcc
no error message this time.
With the compilation complete, install gcc:
$ make install-gcc
Check ${PREFIX}/bin, we can find arm-linux-gcc is there.
5. build uClibc
$ make CROSS=i386-linux- menuconfig
In Target Architecture option, I select arm;
In Target Architecture Features and Options:
In Target Process Type, I choose generic arm;
Disable MMU and Float Point Number Support;
The Linux kernel header location is set to ${PRJROOT}/kernel/linux-2.4.20;
In Library Installation Options:
shared library loader path is set to /lib
uClibc runtime library directory is set to /home/zhupf/haimai/tools/RTLib
uClibc development environment directory (DEVEL_PREFIX) is set to ${PRJROOT}/tools/DevEnv
after menuconfig, then:
$ make CROSS=arm-linux-
$ make CROSS=arm-linux- PREFIX="" install
6. build complete gcc
first edit the file gcc/config/arm/t-linux
$ cd ${PRJROOT}/build-tools/build-gcc
$ ../gcc-2.95.3/configure --target=$TARGET --prefix=${PREFIX} --enable-languages=c,c++
$ make all
In step6, some error message appear (I append the result of make all below), so could anybody tell me what is wrong? and what should I do?
Thanks in advance!
Sincerely Yours
Zhu Pengfei
----------------------------------------------------------------
make[1]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/libiberty'make[2]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/libiberty/testsuite'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/libiberty/testsuite'
make[1]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/libiberty'
make[1]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo'
make all-recursive
make[2]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo'
Making all in intl
make[3]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo/intl'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo/intl'
Making all in lib
make[3]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo/lib'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo/lib'
Making all in makeinfo
make[3]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo/makeinfo'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo/makeinfo'
make[2]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo'
make[1]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/texinfo'
make[1]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/etc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/etc'
make[1]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/gcc'
(cd intl && make all)
make[2]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/gcc/intl'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/gcc/intl'
if [ -f libgcc2.ready ] ; then \
true; \
else \
touch libgcc2.ready; \
fi
make[1]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/gcc'
Configuring in arm-linux/libiberty
loading cache ./config.cache
checking host system type... arm-unknown-linux-gnu
checking build system type... i686-pc-linux-gnu
checking for arm-linux-ar... arm-linux-ar
checking for arm-linux-ranlib... arm-linux-ranlib
checking for gcc... /home/zhupf/haimai/build-tools/build-gcc/gcc/xgcc -B/home/zhupf/haimai/build-tools/build-gcc/gcc/ -B/home/zhupf/haimai/tools/arm-linux/bin/
checking whether we are using GNU C... yes
checking whether /home/zhupf/haimai/build-tools/build-gcc/gcc/xgcc -B/home/zhupf/haimai/build-tools/build-gcc/gcc/ -B/home/zhupf/haimai/tools/arm-linux/bin/ accepts -g... yes
checking for POSIXized ISC... no
checking for a BSD compatible install... /usr/bin/install -c
xhost-mkfrag is unchanged
checking how to run the C preprocessor... /home/zhupf/haimai/build-tools/build-gcc/gcc/xgcc -B/home/zhupf/haimai/build-tools/build-gcc/gcc/ -B/home/zhupf/haimai/tools/arm-linux/bin/ -E
checking for sys/file.h... yes
checking for sys/param.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for unistd.h... yes
checking for strings.h... yes
checking for sys/time.h... yes
checking for sys/resource.h... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether the C compiler (/home/zhupf/haimai/build-tools/build-gcc/gcc/xgcc -B/home/zhupf/haimai/build-tools/build-gcc/gcc/ -B/home/zhupf/haimai/tools/arm-linux/bin/ -g -O2 ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
make[1]: Entering directory `/home/zhupf/haimai/build-tools/build-gcc/arm-linux/libio'
test x"no" != xyes ||\
/home/zhupf/haimai/build-tools/build-gcc/gcc/xgcc -B/home/zhupf/haimai/build-tools/build-gcc/gcc/ -B/home/zhupf/haimai/tools/arm-linux/bin/ -c -g -O2 -I. -I../../../gcc-2.95.3/libio -D_IO_MTSAFE_IO ../../../gcc-2.95.3/libio/iogetline.c -o pic/iogetline.o
/home/zhupf/haimai/build-tools/build-gcc/gcc/xgcc -B/home/zhupf/haimai/build-tools/build-gcc/gcc/ -B/home/zhupf/haimai/tools/arm-linux/bin/ -c -g -O2 -I. -I../../../gcc-2.95.3/libio -D_IO_MTSAFE_IO ../../../gcc-2.95.3/libio/iogetline.c
In file included from ../../../gcc-2.95.3/libio/iogetline.c:26:
../../../gcc-2.95.3/libio/libioP.h:38: bits/libc-lock.h: No such file or directory
In file included from ../../../gcc-2.95.3/libio/iolibio.h:1,
from ../../../gcc-2.95.3/libio/libioP.h:47,
from ../../../gcc-2.95.3/libio/iogetline.c:26:
../../../gcc-2.95.3/libio/libio.h:30: _G_config.h: No such file or directory
../../../gcc-2.95.3/libio/libio.h:167: bits/stdio-lock.h: No such file or directory
make[1]: *** [iogetline.o] Error 1
make[1]: Leaving directory `/home/zhupf/haimai/build-tools/build-gcc/arm-linux/libio'
make: *** [all-target-libio] Error 2
zhupf@cgdp.nju.edu.cn
2004-07-29
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |