[GAP] Building a Gnat cross compiler

Pierre Habraken Pierre.Habraken at imag.fr
Wed Apr 19 12:31:47 CEST 2006


Hello,

I have been using for several yars the gcc tool chain for cross 
compiling C programs (host linux / solaris, target arm-elf).
I am now trying to build a Gnat cross compiler for same host (Linux) and 
target, but building gnatlib and gnattools fails.

I am building the tool chain on an Intel box with Linux Fedora Core 2 
and gcc version 3.3.3 (with Ada) installed.

I am using binutils-2.15.tar.gz, gcc-3.4.5-20050524-src.tgz and 
gnat-gpl-2005-src.tgz (as provided at libre2.adacore.com), plus 
newlib-1.14.0 (from sources.redhat.com).

Here is what I have done successfully :
- build and install binutils
- build and install gcc + gnat
- build and install newlib

Then, when I try to build gnatlib and gnattools, I get in trouble (see 
trace below) : I understand that make attempts to cross compile file 
system oriented code. The target arm-elf has no file system and thus 
does not support operations like opendir, readdir, etc. Probably some 
switch or configuration option has been unproperly set.

Did anyone encounter such a problem ?
Any idea about the way to fix it ?

Thanks a lot in advance for any help.

Pierre

===============================================================
$ make -C gcc gnatlib cross-gnattools ada.all.cross
make: Entering directory `/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc'
make -C ada "BISON=bison" "BISONFLAGS=" "CFLAGS=-g -W -Wall 
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic 
-Wno-long-long  " "LDFLAGS=" "FLEX=flex" "FLEXFLAGS=" "LN=ln" "LN_S=ln 
-s" "MAKEINFO=makeinfo" "MAKEINFOFLAGS=--no-split" "MAKEOVERRIDES=" 
"SHELL=/bin/sh" "exeext=" "build_exeext=" "objext=.o" 
"exec_prefix=/opt/gnu/arm+ada" "prefix=/opt/gnu/arm+ada" 
"local_prefix=/usr/local" 
"gxx_include_dir=/opt/gnu/arm+ada/lib/gcc/arm-elf/3.4.5/../../../..`echo 
/opt/gnu/arm+ada | sed -e 's|^/opt/gnu/arm+ada||' -e 
's|/[^/]*|/..|g'`/include/c++/3.4.5" 
"build_tooldir=/opt/gnu/arm+ada/arm-elf" 
"gcc_tooldir=/opt/gnu/arm+ada/lib/gcc/arm-elf/3.4.5/../../../../arm-elf" 
"bindir=/opt/gnu/arm+ada/bin" 
"libexecsubdir=/opt/gnu/arm+ada/lib/gcc/arm-elf/3.4.5" 
"datadir=/opt/gnu/arm+ada/share" 
"localedir=/opt/gnu/arm+ada/share/locale" "CC=gcc" "STAGE_PREFIX="  \
    GNATLIBFLAGS="-W -Wall -gnatpg" \
    GNATLIBCFLAGS="-g -O2 " \
    TARGET_LIBGCC2_CFLAGS="-Dinhibit_libc -fno-inline" \
    THREAD_KIND="native" \
    TRACE="no" \
    gnatlib
make[1]: Entering directory 
`/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc/ada'
make -C rts \
CC="`echo \" ./xgcc -B./ -B/opt/gnu/arm+ada/arm-elf/bin/ -isystem 
/opt/gnu/arm+ada/arm-elf/include -isystem 
/opt/gnu/arm+ada/arm-elf/sys-include 
-L/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc/../ld\" \
         | sed -e 's^\./xgcc^../../xgcc^' -e 's^-B./^-B../../^'`" \
         INCLUDES="-I. -I.. -I../.. 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada/../config 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada/../../include 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada/.. -I./../.." \
                 CFLAGS="-g -O2  -Dinhibit_libc -fno-inline -fexceptions 
-DIN_RTS" \
         srcdir=/usr/local/src/gcc-3.4.5-gnat/gcc/ada \
         -f ../Makefile adaint.o argv.o cio.o cstreams.o ctrl_c.o 
errno.o exit.o raise.o sysdep.o aux-io.o init.o initialize.o seh_init.o 
cal.o final.o tracebak.o expect.o mkdir.o socket.o
make[2]: Entering directory 
`/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc/ada/rts'
../../xgcc -B../../ -B/opt/gnu/arm+ada/arm-elf/bin/ -isystem 
/opt/gnu/arm+ada/arm-elf/include -isystem 
/opt/gnu/arm+ada/arm-elf/sys-include 
-L/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc/../ld -c -DCROSS_COMPILE 
-DIN_GCC   `echo -g -O2  -Dinhibit_libc -fno-inline -fexceptions 
-DIN_RTS |sed -e 's/-pedantic//g' -e 's/-Wtraditional//g'`      -I. -I.. 
-I../.. -I/usr/local/src/gcc-3.4.5-gnat/gcc/ada 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada/../config 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada/../../include 
-I/usr/local/src/gcc-3.4.5-gnat/gcc/ada/.. -I./../.. adaint.c \
   -o adaint.o
In file included from /opt/gnu/arm+ada/arm-elf/include/dirent.h:6,
                  from adaint.h:34,
                  from adaint.c:156:
/opt/gnu/arm+ada/arm-elf/include/sys/dirent.h:10:2: #error "<dirent.h> 
not supported"
In file included from adaint.c:156:
adaint.h:71: error: syntax error before '*' token
adaint.c:275: error: `MAXPATHLEN' undeclared here (not in a function)
adaint.c:832: error: syntax error before '*' token
adaint.c: In function `__gnat_readdir':
adaint.c:842: error: `dirp' undeclared (first use in this function)
adaint.c:842: error: (Each undeclared identifier is reported only once
adaint.c:842: error: for each function it appears in.)
adaint.c:846: error: `buffer' undeclared (first use in this function)
adaint.c:846: error: dereferencing pointer to incomplete type
adaint.c: In function `__gnat_get_env_value_ptr':
adaint.c:1231: warning: assignment makes pointer from integer without a cast
adaint.c: In function `__gnat_locate_exec_on_path':
adaint.c:2053: warning: initialization makes pointer from integer 
without a cast
make[2]: *** [adaint.o] Error 1
make[2]: Leaving directory 
`/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc/ada/rts'
make[1]: *** [gnatlib] Error 2
make[1]: Leaving directory 
`/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc/ada'
make: *** [gnatlib] Error 2
make: Leaving directory `/usr/local/src/build-linux/gcc-3.4.5-gnat/gcc'
$
===============================================================
-- 
Pierre HABRAKEN - mailto:Pierre.Habraken at imag.fr
Tél: 04 76 82 72 46 - Fax: 04 76 82 72 87
IMAG-LSR BP72 38402 SAINT MARTIN D'HERES Cedex



More information about the GAP mailing list