basic questions

J. Johnston
Tue Dec 21 12:53:00 GMT 1999

Peter Popov wrote:
> I've successfully built a powerpc-eabi cross compiler
> including the newlib-1.8.2 release.  I've never used
> newlib before and have some rather basic questions
> for which I couldn't find any documentation.  After
> building the cross compiler, in the lib directory I ended up
> with:
> ads.ld      le/       libiberty.a  libnosys.a*         lin/       sim-crt0.o
> ca/         libads.a  libm.a       libsim.a            mbx.ld     yellowknife.ld
> crt0.o      libc.a    libmbx.a     libstdc++.a.2.10.0  mbx.specs
> ldscripts/  libg.a    libmvme.a    libyk.a             nof/
> What I don't understand is why are there some many copies of the
> same libraries? libc.a, for example, is in this directory, plus
> in a whole bunch of other subdirectories:
> #find . -name libc.a
> ./nof/le/ca/libc.a
> ./nof/le/libc.a
> ./nof/libc.a
> ./nof/ca/libc.a
> ./le/ca/libc.a
> ./le/libc.a
> ./ca/libc.a
> ./lin/libc.a
> ./libc.a
> I understand the "le", little-endian, subdirectory name, but
> not the rest. Any tips would be appreciated.  Please respond
> directly since I'm not on the list.

They are not the same libraries.  Each is built with different options.
The following options correspond to the directory names:

      nof   -msoft-float
      le    -mlittle
      ca    -mcall-aix
      lin   -mcall-linux

Where there are multiple subdirectories, there are multiple options.
/nof/le/ca/libc.a is a library built with -msoft-float -mlittle -mcall-aix

The linker will use the appropriate library based on your compile options.  
For example, if you build your application with -msoft-float, you don't want the linker
to link in a C library that uses floating point instructions.  The linker knows to
use the library out of the nof sub-directory.

-- Jeff Johnston (Cygnus Solutions)

More information about the Newlib mailing list