"lib" Prefix on Libraries

c, c++, gcc, naming-conventions

Solution

You can name a library whatever you want, but if you want gcc's `-l` flag to find the right one, you need to name it the way that link describes. For example:

gcc -o myapp myapp.c -lm

Will compile `myapp.c`, link the resulting object with `libm.a`, and output an executable called `myapp`. These days, there might be a more complicated search path involving dynamic library names, etc., but you should get the basic idea from this example.

From the gcc man page:

`-l` library ...

... surrounds library with `lib` and `.a` and searches several directories.

Problem

From http://www.adp-gmbh.ch/cpp/gcc/create_lib.html: Note: the library must start with the three letters `lib` and have the suffix `.a`. Is this an operating system convention, or a `gcc`/`ar` quirk? Xcode seems to be able to create libraries without the prefix. What's it doing differently?

Original source