headers and libs

Kai Ruottu kai.ruottu@luukku.com
Thu Jul 5 01:46:00 GMT 2001

On Wed, 04 Jul 2001 11:04:34 -0400
Stuart Kenny <skenny@solidum.com> wrote:

> So are these the headers and libraries normally found in the /usr/include
> and /usr/lib directories (on an appropriate machine?)

 If you mean the target machines, you are right... Using the host-headers
doesn't work.
> We're trying to centralize our building environment for multi-platform
> development, as well as becoming less vulnerable to IT changing elements
> in our build environment.
> I'm trying to make cross compilers from Linux (or NetBSD) to Linux,
> NetBSD, Mingw32 and Sun-solaris2.7 (for now, more to follow)
> I'm having tons of problems, usually with headers.  Am I using the wrong
> ones?

 For Linux-targets you must select to use some kernel headers ('include/asm'
and 'include/linux'), to be a part of the 'target headers', but these may be
updated later.  Only the 'limits.h' from the standard C headers must be seen
in the '$prefix/$target/sys-include' during the build, all the others, and
this too, should be in the '$prefix/$target/include'. The GCC build searches
them there with the '-I$(build_tooldir)/include' in the 'xgcc' command line.

 The symlinks between the Linux libs must be fixed, the 'libc.so' edited and
so on, before they are in condition. Pointing to the uninstalled libs using the
'--with-libs=' and expecting the configure to do all the fixing in the
symlinks and the 'libc.so'-editing is vain. 

 The NetBSD and Solaris7 targets also have equivalent issues for symlinks
etc. Knowing the targets is a must, so the Solaris2 FAQ etc. are useful,
the same problems arise with the native and cross... AFAIK the ELF-based
NetBSD 1.5 isn't yet very well supported as the target, and Mingw must be
learned via 'www.mingw.org'...

 Also the X11-headers and libs belong to the target and you must decide where
to put them in the host system. The '$prefix/$target/X11/include' (symlinked
to '$prefix/$target/include/X11') and the '$prefix/$target/X11/lib' could be
one solution.

 The standard headers and the Win32-API headers can be keeped separated in
the 'include' and 'sys-include' (both will be searched) in Mingw...

 So there are so much work to do which the '--with-headers' and '--with-libs'
don't do. Therefore learning the $prefix/$target as the important place for
the target stuff is highly recommended. BTW, also the target binutils will
be installed there into the '$prefix/$target/bin' and the

> I know cross compilers are usually used for imbedded systems, it is hard
> to find info on non-imbedded applications.

 The GCC manual's "Installation / Cross-Compiler" then handles only the
non-embedded case. Using 'info' to see the GCC manual helps, if only the
manual was built as "Using and Porting...", not only "Using...". This is
the most important reason to not see anything about cross-compilers in
the GCC-manual... Having the "User's Manual" is not the same as having
the "User's and Porter's Manual"...

 Downloading the RedHat's PDF manual sets for '99r1p1'  and '00r1' via:


should give quite a lot needed 'info' (although the embedded aspect can
be strong in them).

Cheers, Kai

Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com

More information about the crossgcc mailing list