Cross Compiler Host MinGW Target PowerPC

Brian Dessent brian@dessent.net
Tue Nov 21 11:42:00 GMT 2006


Sebastian Ebenbeck wrote:

> now I am using relative paths. The Compile process runs much longer but
> fail again.
> 
> Configuration in dir: "/home/seb/build/combined"
> Source dir: "/home/seb/combined"
> 
> export srcdir=../../combined
> export builddir=.
> export prefix=../../bin/ppc
> ../../combined/configure --target=powerpc-405-eabi --with-newlib
> --disable-shared --disable-libssp --enable-languages=c,c++
> make

That looks wrong.  You shouldn't set those in the environment, instead
use --prefix=c:/foo/bar as argument to configure.  Same with srcdir, it
should be detected automatically from the configure invocation without
needing to be specified, or it can be supplied explicitly with --srcdir,
but not in the environment.

> In file included from ../../../combined/gcc/libgcc2.c:35:
> ./tm.h:5:35: error: config/rs6000/rs6000.h: No such file or directory
> ./tm.h:6:28: error: config/dbxelf.h: No such file or directory
> ./tm.h:7:27: error: config/elfos.h: No such file or directory
> ./tm.h:8:26: error: config/svr4.h: No such file or directory
> ./tm.h:9:34: error: config/freebsd-spec.h: No such file or directory
> ./tm.h:10:34: error: config/rs6000/sysv4.h: No such file or directory
> ./tm.h:11:33: error: config/rs6000/eabi.h: No such file or directory
> ./tm.h:12:23: error: defaults.h: No such file or directory

This looks like yet another path problem, perhaps relating to srcdir
being set in the environment.

> This fails because of wrong includes:
> -I. -I -I../../../combined/gcc -I../../../combined/gcc/  ...
>       ^
> There is a "-I" argument without a Path?

More path woes.

> If I try to compile it without the -I argument:
> /home/seb/build/combined/./gcc/xgcc -B/home/seb/build/combined/./gcc/
> -nostdinc -B/home/seb/build/combined/powerpc-405-e
> abi/newlib/ -isystem
> /home/seb/build/combined/powerpc-405-eabi/newlib/targ-include -isystem
> /home/seb/combined/newlib/libc
> /include -BC:/msys/home/seb/bin/ppc/powerpc-405-eabi/bin/
> -BC:/msys/home/seb/bin/ppc/powerpc-405-eabi/lib/ -isystem C:/msy
> s/home/seb/bin/ppc/powerpc-405-eabi/include -isystem
> C:/msys/home/seb/bin/ppc/powerpc-405-eabi/sys-include -O2  -O2 -g -O2
>    -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -i
> system ./include   -specs=ldblspecs -g  -DIN_LIBGCC2
> -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I../../../combined/gcc -
> I../../../combined/gcc/ -I../../../combined/gcc/../include -I./../intl
> -I../../../combined/gcc/../libcpp/include  -mreloca
> table-lib -mno-eabi -mstrict-align -DL_muldi3 -c
> ../../../combined/gcc/libgcc2.c -o libgcc/./_muldi3.o
> 
> I get the error:
> xgcc.exe: _spawnvp: No such file or directory

This is even more of a mess, you've got both style paths mixed together:
-B/foo/bar and -BC:/foo/bar.

> I have taken a look into the Makefile and it seams that "libgcc2.c" is
> compiled with a wrong set of arguments.
> 
> I'm usually writing microcontroller software and I am not very familiar
> with such big makefiles.
> Can anybody help me, Please?

It looks like right now you're trying

--host=i686-pc-mingw32 --build=i686-pc-mingw32 --target=powerpc-405-eabi

I suggest that instead you install Cygwin and use that as host for the
toolchain:

--host=i686-pc-cygwin --build=i686-pc-cygwin --target=powerpc-405-eabi

or if you must have a MinGW hosted tool, do a canadian cross from Cygwin
or Linux:

--host=i686-pc-mingw32 --build=i686-pc-linux-gnu
--target=powerpc-405-eabi

If you absolutely have to have to use MinGW for both build and host,
then try invoking configure like so:

`cd /home/seb/combined && pwd -W`/configure --host=i686-pc-mingw32 \
  --build=i686-pc-mingw32 \
  --target=powerpc-405-eabi \
  --prefix=`cd /home/seb/bin/ppc && pwd -W` \
  --with-gcc \
  --with-gnu-as \
  --with-gnu-ld \
  --with-newlib \
  --disable-shared \
  --disable-libssp \
  --enable-languages=c,c++

The `cd /posix/path && pwd -W` is the MSYS idiom for getting a win32
path from a posix path.  If you use Cygwin or linux for the build system
then you don't have to muck with this because you can just use posix
paths everywhere.

Brian



More information about the Gcc-help mailing list