If you want to build the Hurd libraries and servers (translators) yourself
instead of just using pre-built binaries, follow these instructions.

One note before we begin: the likelihood that the compiled result will actually
do what you expect it to do is the highest if you try building from the Debian
source packages. This is especially true if you want to use your compilation
within a Debian system.

Note that for building code to run on GNU/Hurd systems, you need a toolchain
for the GNU Hurd. You can either compile on a GNU/Hurd system, or need a
cross-compiler targeting GNU/Hurd. Our toolchain page has the
details.

Building, but not the Debian Way

Notice that make install will install the Hurd in /, not in /usr/local/
or /local/, so your current Hurd servers will be replaced.
To install to a different location, specify --prefix=PREFIX as configure
parameter, e.g. --prefix=/usr (as done when having a real /usr).

By default profiling versions of all the libraries and code are generated but
this is useless in most of the cases, so we disable them by specifying
--disable-profile on configure's command line.

If you just want to build a specific server or library, you can pass its name
to make:

$ make ext2fs
$ make libtrivfs

This will automatically build all libraries that are required to build the
requested server or library.

RPC IDs

[TODO: update / integrate somewhere.]

If you want to trace the RPC calls made by some process by using rpctrace
command, you will also want some more human-readable output of this
command. This is achieved by generating hurd.msgids file that includes the
mapping between the number of the RPC call and its name:

$ cd build/hurd
$ make hurd.msgids
$ cp hurd.msgids ~

Now you can use this file in the following way:

$ rpctrace -i ~/hurd.msgids ls

Testing

Any statically linked binaries (make proc && (cd proc/ && make proc.static))
can be used directly, as they are self-contained regarding the Hurd libraries
they're using.

Dynamically linked binaries will use the system's shared Hurd libraries, which
may be or may not be what you want.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or any later
version published by the Free Software Foundation; with no Invariant Sections,
no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is
included in the section entitled GNU Free Documentation License.