Compilation troubles
Kai Ruottu
karuottu@mbnet.fi
Fri Oct 13 11:42:00 GMT 2006
Peter Coates kirjoitti:
> Good Morning,
>
> Recently I've been trying to set up a cross compiler for gcc using
> version 2.95.3 supplied to me from a hardware vendor. The target is a
> Samsung S3C2410,
This seems to be ARM920T ("Thumb" mode supported)...
> and the host computer has been both a Windows XP (home and Pro)
> machine running cygwin, and an SUSE Linux 10.1 machine.
>
> After following the vendor's instructions on installing the
> toolchains, I have tried to run a simple "hello world" program on each
> platform and every time I receive the error "unable to exec 'cpp0': no
> such file or directory".
The default place for this is '$prefix/lib/gcc-lib/$target/2.95.3' in
the gcc-2.95.3 case... The $target probably is 'arm-elf'
and the $prefix is something the GCC builder wanted it to be...
> I have used -print-search-dirs and find that the location where gcc
> looks for its executables seems to be the same place where cpp0 is
> located, except for the '/opt/' at the start of the path name - I
> assume this might be a gcc method of defining the root directory?
The previously told default place is usually the first one seen with
the '-print-search-dirs' for "programs", so it should be
found! If the install instructions ordered to change the built-in
$prefix, then there should be something to compensate
that like setting a new "search root" in environment with
GCC_EXEC_PREFIX... The '-print-search-dirs' shows the
influence of this... You should elaborate this "except for"! Are the
executables 'cc1*', 'cpp0' and 'collect2' installed into
a place which isn't seen among the shown search directories?
If you haven't any sane reason to change the built-in install $prefix,
don't change it whatever the install instructions will
tell!
> Searching the internet I found some other people having the same
> problem, and it seemed to suggest that it was due to an incorrect
> installation, although considering I did not build it in the first
> place, it came from the vendor themselves, and the fact it has failed
> twice on seperate platforms seems to suggest otherwise. Another fault
> may lie in the manufacturer's installation instructions, but this idea
> seems suspect also.
When one has a free choice to select this $prefix and then try to make
it a "standard" afterwards, each GCC provider
tries to 'push' its own 'standard' :-( But it would be better to use
some suggested one! For Cygwin hosted GCCs this
should be the '/cygwin', on Linux there unfortunately isn't anything
(suitable, the one used for the native GCC, '/usr',
is too "limited for the system components"), so choices like
'/usr/local', '/opt/gnu', '/opt/gcc', '/opt/crossgcc' etc. can
be seen... Some vendors could like to have their own 'brand name' and
the 'host name' there like in :
'/opt/company-foo/H-i686-linux'.... Anyway the purpose is that this
'standard' would be used. The problem arises when
one must install another GCC from another vendor and wants it to use the
same standard $prefix with the first one...
> Lastly, I have considered building a new platform from scratch using a
> recent version of GCC, but I might not have the compilation tools to
> do this currently, and I would much prefer a solution which might fix
> my current GCC installation.
Just try Google with 'arm-elf crosstool' and you should find many ARM
tools... The site:
http://www.macraigor.com/full_gnu.htm
is one I remember... Building oneself is ok if one doesn't need any
handholding from others. Learning the basics about
crosstoolchains happens best when using a crosstoolchain!
The gcc-2.95.3 still required separate compilers for the 32-bit ARM mode
('arm-elf') and 16-bit Thumb mode ('thumb-elf')
but the gcc-3.4.x in the Macgraigor toolchain has both supported in one
compiler, compiling for Thumb happens using the
'-mthumb' option for GCC... Probably also gcc-4.x level tools are
freely downloadable somewhere...
More information about the Gcc-help
mailing list