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]

CrossGCC FAQ build method not working


Hello,


I've been trying to compile a gcc on my i686 with which I can then
compile programs for an i586 single board computer.


My workstation distro (Gentoo) has gcc-3.3.2 on it. The distro gcc is
compiled as a native i686 only compiler with propolice built in to it:


[seb@xerxes 20:08:46 toolchain]$ gcc --version
gcc (GCC) 3.3.2 20031218 (Gentoo Linux 3.3.2-r5, propolice-3.3-7)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


I have checked that this installed compiler will compile gcc 3.3.2, with
the following commands (executed in my gcc-build directory) working
perfectly:

../gcc-3.3.2/configure --program-prefix=i686-
make


I want to compile binutils and gcc according the the CrossGCC FAQ, which
says do the following:


# Configure, build and install binutils
 cd build-binutils
../binutils-2.9.1/configure --target=$target --prefix=$prefix -v
make all install

# Configure, build and install gcc
cd ../build-gcc
../gcc-2.8.1/configure --target=$target --prefix=$prefix -v
make all install


Binutils v. 2.14 builds fine according to this scheme. However, gcc
v3.3.2 is giving me problems.


Here is how I've configured gcc:

../gcc-3.3.2/configure --target=i586-linux \
     --prefix=/home/seb/crossenv/toolchain


For this to work at all I've had to make the following symbolic links in
/home/seb/crossenv/toolchain/i586-linux/:


include -> /usr/include
crti.o  -> /usr/lib/crti.o
crtn.o   -> /usr/lib/crtn.o
libc.a   -> /usr/lib/libc.a
libc.so   -> /usr/lib/libc.so
libc.so.5 -> /usr/lib/libc.so.5


The first stage of the gcc build then succeeds, but the resultant cross
compiler "cannot create executables", as seen at the end of the
configure step that the gcc build process runs for libiberty:


Configuring in i586-linux/libiberty
creating cache ../config.cache
checking whether to enable maintainer-specific portions of Makefiles... no
checking for makeinfo... makeinfo
checking for perl... perl
checking host system type... i586-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
checking for i586-linux-ar... i586-linux-ar
checking for i586-linux-ranlib... i586-linux-ranlib
checking for gcc...  /home/seb/crossenv/gcc-build/gcc/xgcc -B/home/seb/crossenv/gcc-build/gcc/ -B/home/seb/crossenv/toolchain/i586-linux/bin/ -B/home/seb/crossenv/toolchain/i586-linux/lib/ -isystem /home/seb/crossenv/toolchain/i586-linux/include
checking whether we are using GNU C... yes
checking whether  /home/seb/crossenv/gcc-build/gcc/xgcc -B/home/seb/crossenv/gcc-build/gcc/ -B/home/seb/crossenv/toolchain/i586-linux/bin/ -B/home/seb/crossenv/toolchain/i586-linux/lib/ -isystem /home/seb/crossenv/toolchain/i586-linux/include accepts -g... yes
checking whether  /home/seb/crossenv/gcc-build/gcc/xgcc -B/home/seb/crossenv/gcc-build/gcc/ -B/home/seb/crossenv/toolchain/i586-linux/bin/ -B/home/seb/crossenv/toolchain/i586-linux/lib/ -isystem /home/seb/crossenv/toolchain/i586-linux/include and cc understand -c and -o together... yes
checking for POSIXized ISC... no
checking for working const... yes
checking for inline... inline
checking for a BSD compatible install... /usr/bin/install -c
checking how to run the C preprocessor...  /home/seb/crossenv/gcc-build/gcc/xgcc -B/home/seb/crossenv/gcc-build/gcc/ -B/home/seb/crossenv/toolchain/i586-linux/bin/ -B/home/seb/crossenv/toolchain/i586-linux/lib/ -isystem /home/seb/crossenv/toolchain/i586-linux/include -E
checking for sys/file.h... yes
checking for sys/param.h... yes
checking for limits.h... yes
checking for stdlib.h... yes
checking for malloc.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 time.h... yes
checking for sys/resource.h... yes
checking for sys/stat.h... yes
checking for sys/mman.h... yes
checking for fcntl.h... yes
checking for alloca.h... yes
checking for sys/pstat.h... no
checking for sys/sysmp.h... no
checking for sys/sysinfo.h... yes
checking for machine/hal_sysinfo.h... no
checking for sys/table.h... no
checking for sys/sysctl.h... yes
checking for sys/systemcfg.h... no
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether errno must be declared... no
checking for ANSI C header files... no
checking for uintptr_t... no
checking for pid_t... yes
checking whether the C compiler ( /home/seb/crossenv/gcc-build/gcc/xgcc -B/home/seb/crossenv/gcc-build/gcc/ -B/home/seb/crossenv/toolchain/i586-linux/bin/ -B/home/seb/crossenv/toolchain/i586-linux/lib/ -isystem /home/seb/crossenv/toolchain/i586-linux/include -O2 -g -O2 ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
make: *** [configure-target-libiberty] Error 1
[seb@xerxes 19:56:04 gcc-build]$


Does anyone have any ideas about why the C compiler that's been built
can't create executables? Perhaps the propolice stuff is messing things
up? How does the configure script check if the C compiler works here? Is
libiberty not already built as part of binutils anyway?

A few pointers about what to try next would be very helpful because I'm
feeling a bit stuck here.

With regards and thanks for reading,

Seb James


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]