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] |