Build a cross compiler on an intel/linux plateform
Kai Ruottu
kai.ruottu@luukku.com
Wed Jul 17 01:02:00 GMT 2002
> I can build without any problem binutil 2.12 for the target rs6000-aix
> plateform.
Please define the 'aix' ! AFAIK there are many variations for it with
different properties, 32-bit only, mixed 32-bit/64-bit... 'AIX3' is not the
same as 'AIX4' and so on... Don't let the configure guess the AIX
version unless you know exactly to which version it will lead...
> But when I try to built gcc 3.1 with the command
> # make LANGUAGES=c all-gcc, i('ve got this error :
The 'gcc/config.gcc' has the following templates for the
RS6000/AIX-variations:
---------------------------- clip ---------------------------------------
rs6000-ibm-aix3.[01]*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/aix31.h rs6000/xcoff.h"
float_format=none
use_collect2=yes
;;
rs6000-ibm-aix3.2.[456789]* | powerpc-ibm-aix3.2.[456789]*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/aix3newas.h rs6000/xcoff.h"
tmake_file=rs6000/t-newas
float_format=none
use_collect2=yes
extra_headers=
;;
rs6000-ibm-aix4.[12]* | powerpc-ibm-aix4.[12]*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/aix41.h rs6000/xcoff.h"
tmake_file=rs6000/t-newas
float_format=none
use_collect2=yes
extra_headers=
;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/aix43.h rs6000/xcoff.h"
tmake_file=rs6000/t-aix43
float_format=none
use_collect2=yes
thread_file='aix'
extra_headers=
;;
rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h"
tmake_file=rs6000/t-aix43
float_format=none
use_collect2=yes
thread_file='aix'
extra_headers=
;;
rs6000-ibm-aix*)
xm_defines=POSIX
tm_file="${tm_file} rs6000/aix.h rs6000/xcoff.h"
float_format=none
use_collect2=yes
;;
---------------------------- clip ---------------------------------------
Your 'selection' seems to lead using the last one...
> /usr/src/redhat/BUILD/gcc-3.1/gcc/xgcc -B/usr/src/redhat/BUILD/gcc-3.1/gcc/
> -nostdinc -B/usr/src/redhat/BUILD/gcc-3.1/rs6000-aix/newlib/
> -isystem /usr/src/redhat/BUILD/gcc-3.1/rs6000-aix/newlib/targ-include
> -isystem /usr/src/redhat/BUILD/gcc-3.1/newlib/libc/include
> -B/usr/local/crossgcc/rs6000-aix/bin/ <----------- binutils
> -B/usr/local/crossgcc/rs6000-aix/lib/ <---------- libraries
> -isystem /usr/local/crossgcc/rs6000-aix/include <------------- headers
> -S tmp-dum.c
Why did you use the '--with-newlib' when AIX don't use newlib but uses its
own proprietary libraries and headers? You should have preinstalled these
into the pointed '/usr/local/crossgcc/rs6000-aix/lib' and
'/usr/local/crossgcc/rs6000-aix/include'. No use for newlib anywhere...
If you don't have the possibility to get the AIX-target headers and libraries,
maybe the best idea is to forget the whole idea unless you mean to port
newlib or some other free C-library for AIX (a job for a 'guru' basically...)
> gcc -DIN_GCC -DCROSS_COMPILE -g -O2 -W -Wall -Wwrite-strings
> -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic
> -Wno-long-long -DHAVE_CONFIG_H -o Tcollect2 \
> collect2.o tlink.o hash.o intl.o underscore.o version.o
> ./intl/libintl.a ../libiberty/libiberty.a
> collect2.o: In function `main':
> /usr/src/redhat/BUILD/gcc-3.1/gcc/./collect2.c:1150: undefined reference to
> `resolve_lib_name'
> collect2: ld returned 1 exit status
Don't know about your methods to solve these kind of cases, but I would look
at the line 1150 in 'gcc/collect2' :
---------------------------- clip ---------------------------------------
#ifdef COLLECT_EXPORT_LIST
{
/* Resolving full library name. */
const char *s = resolve_lib_name (arg+2); <---- line 1150
/* Saving a full library name. */
add_to_list (&libs, s);
}
#endif
---------------------------- clip ---------------------------------------
And would then find out where the 'COLLECT_EXPORT_LIST' is defined
and where the function 'resolve_lib_name ()' (using 'grep') if anywhere...
Maybe it is a function available only in the AIX C-library and your 'rs6000-aix'
(something using XCOFF as the object format) is possible only as a native
toolchain... Maybe 'collect2' is unnecessary when using GNU ld, so disabling
it (with a 'USE_COLLECT2=', ie. empty, in the 'gcc/Makefile') could help...
> Can someone have a solution for this or a solution for build a cross gcc for
> an rs6000-aix plateform.
>
> %%title: Building Cygwin hosted newlib-based target toolchain
This 'rubbish' (suitable only to what it says, a newlib-based toolchain) seems
to have mislead you... Instead of reading these kind of things, you should open
your equivalent of my:
---------------------------- clip ---------------------------------------
Installing the GNU Compiler Collection (GCC)
Instructions for Building and Installing GCC 3.1.x
Converted to texinfo by Dean Wakerley, `dean@wakerley.com'
---------------------------- clip ---------------------------------------
The sources for this manual reside in 'gcc/doc/install.texi', but you should find
prebuilt manuals in PDF, HTML etc. format in the net. I used 'pdftex' on Linux
for my 'gcc31-install.pdf'... The sources needed quite a lot fixing though...
Anyway please read carefully the specific install instructions for '*-ibm-aix*', ie.
those for your target. Of course they talk mainly about the native configurations
but all what is written about GNU as and GNU ld is usable with a cross-GCC...
But as told, first you should check what 'AIX' version really is your target...
I remember that only AIX4.x's and newer are possible as cross-toolchains or that
there were first problems with these 32/64-bit hybrids... Or something... Maybe
there is a 'AIX-FAQ' as there is a 'Solaris2-FAQ'... And the build-reports at:
http://gcc.gnu.org/gcc-3.1/buildstat.html',
can tell something...
Cheers, Kai
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
More information about the crossgcc
mailing list