Gnulib - The GNU Portability Library


GNU software has a well-deserved reputation for running on many different types of systems. While our primary goal is to write software for the GNU system, many users and developers have been introduced to us through the systems that they were already using.

Gnulib is a central location for common GNU code, intended to be shared among GNU packages. GCC has libiberty, but this is hard to disentangle from the GCC build tree.

Gnulib takes a different approach. Its components are intended to be shared at the source level, rather than being a library that gets built, installed, and linked against. Thus, there is no distribution tarball; the idea is to copy files from Gnulib into your own source tree.

Gnulib also includes copies of a few files purely for convenience: the GNU coding standards, the GNU maintainer information, the GPL and other licenses (in Texinfo), assorted configuration scripts, and more. The goal is to provide all the common infrastructure needed by GNU packages.

Downloads

Gnulib does not make releases. It is intended to be used at the source level.

You can browse the current Gnulib sources on Savannah.

To use Gnulib, you can retrieve its source code and its history via anonymous Git, using the following shell command:

git clone https://git.savannah.gnu.org/git/gnulib.git

Developers can also retrieve the source code via non-anonymous Git, for purposes of doing commits; for details, please see Gnulib's top-level README file.

After you have the sources, run ./gnulib-tool --help. For help and more info, see the documentation and other resources below.

Documentation

The manual is still minimal and sketchy (volunteers especially welcome).

./gnulib-tool --help also provides some information, as mentioned above.

You can also view the modules comprising gnulib.

Mailing lists

<bug-gnulib@gnu.org> is used to discuss most aspects of Gnulib, including development and enhancement requests, as well as bug reports.

Getting involved

If you think you have found a bug in Gnulib, then please send as complete a report as possible to the mailing list above.

If you would like any new feature to be included in future versions of Gnulib, please send a request to the mailing list above.

Please remember that development of Gnulib is a volunteer effort, and you can also contribute to its development. For information about contributing to the GNU Project in general, please read How to help GNU. Here are some guidelines for people wishing to contribute to Gnulib:

  • If your .c and .h files define functions that are broken or missing on some other system, we should be able to include it.
  • If your functions remove arbitrary limits from existing functions (either under the same name, or as a slightly different name), we should be able to include it.
  • If your functions define completely new but rarely used functionality, you should probably consider packaging it as a separate library.

All Gnulib source code is copylefted by the Free Software Foundation. Assignment forms may be necessary before we can access your source code.

Contributors

Principal active contributors to Gnulib: Eric Blake, Jim Meyering, Pádraig Brady, Paul Eggert, and Simon Josefsson. Please use the mailing list for contact.