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]

RE: Build a cross compiler on an intel/linux plateform


> 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


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