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