IA64 cross compiler problem

Jim Wilson wilson@tuliptree.org
Thu Jun 19 00:14:00 GMT 2003


Co Ngai Fung wrote:
> # /usr/crossgcc/ia64/bin/ia64-elf-gcc a.c
> <command line>:1:13: warning: "machine" re-asserted
> /usr/crossgcc/ia64/bin/../lib/gcc-lib/ia64-elf/3.2.3/../../../../ia64-elf/bin/ld: cannot open crt0.o: No such file or directory
> collect2: ld returned 1 exit status

I see you configured for ia64-elf.  This is a non-working target.  It 
was used for development in the early days before IA-64 hardware was 
available, and was mostly abandoned after that.  If you really want a 
cross compiler for an embedded IA-64 target, then you will have to do 
some porting work.  If you wanted a cross compiler to ia64-linux, then 
use that to configure instead of ia64-elf.

You have no C library for the target, so you won't be able to compile 
any application programs.  This is because the instructions you used are 
for a compiler with no C library.  This would be useful for building OS 
kernels, but not useful for much else.

If you are trying to build a cross compiler to an embedded target, then 
you can use newlib for the C library.  This can easily be built in 
parallel with gcc.  We have some instructions at
	http://gcc.gnu.org/simtest-howto.html

If you are trying to build a cross compiler to linux, and if you have 
access to the target, you can copy /usr/lib and /usr/include to the 
host, and then configure using --with-headers= and --with-libs= pointing 
at the target headers and libraries respectively.  This is the old way 
to do this.  The new way is to use --with-sysroot.  See the documentation.

If you don't have access to the target, then you have to build gcc and 
glibc in parallel.  This is complicated, and currently undocumented. 
Some good info can be found at
	http://kegel.com/crosstool/
See the crosstools.sh script.

Jim



More information about the Gcc mailing list