libnih icon indicating copy to clipboard operation
libnih copied to clipboard

NIH Utility Library

libnih is a light-weight "standard library" of C functions to ease the development of other libraries and applications.

Its goals are:

  • despite its name, to not reimplement anything found in the standard C library or any library normally found in /lib;

  • use standard C types and conventions where appropriate;

  • have a simple and consistent programming interface;

  • be useful to library developers without needing to be exposed in the library's API;

  • not hide implementation details or structure contents, we're all adults after all.

Dependencies

The D-Bus messaging system is required to build the libnih-dbus library and nih-dbus-tool utility. In order to query the availability of the external library, the pkg-config tool is used; and in order to parse D-Bus introspection data, the expat XML parsing library will be used.

The recommended versions are:

* pkg-config 0.22
* D-Bus 1.2.16
* expat 2.0.0

These should all be available from the current release of any modern Linux distribution.

For detailed compilation and installation instructions see the INSTALL file. If you've checked libnih out from revision control, or want to hack on libnih, see the HACKING file.

Cross-compiling

libnih uses the nih-dbus-tool utility it builds during its own build process to generate further sources to be built. When cross-compiling this will fail because the built nih-dbus-tool will most likely not be able to run on the build architecture.

This can be solved by building and installing nih-dbus-tool for the build architecture first, then when performing the cross-compile, the installed copy will be used instead.

If installed into a common system directory, this is automatic; if not, you can pass the path of the nih-dbus-tool binary to the configure script, e.g.:

./configure --build=i486-linux-gnu --host=gnueabi-linux-arm \
	NIH_DBUS_TOOL=/cross/bin/nih-dbus-tool