netcc - a distributed compile utility for gcc

Well, there's already distcc and icecc, so why another distributed compile utility? The reason is simple. Both do not scale well on modern multicore systems and both need either knowledge about the hosts available for compilation or a master daemon is required.

netcc, however, was designed for modern processors and with zero configuration as well as safeguards against miscompiles by using the wrong compiler version on remote systems in mind. It should not be used on old systems with slow processors and insufficient memory. netcc basically consists of a daemon that manages remote compiles and a compiler shim utility that is executed instead of the actual compiler.

netcc is developed on Linux and ported to FreeBSD, NetBSD and OpenBSD. Note that the ports may lack features not supported by the target operating system. The basic installation and usage instructions on these systems are (download here):

tar xzf netcc-1.0.3.tar.gz
cd netcc-1.0.3
make && make install
export PATH=/usr/local/lib/netcc:$PATH

Now you can compile as usual but you're already using the netcc distributed compile. The above use case implies that all systems used for distributed compile reside on the same subnet, i.e. that they are broadcast connected. You do not need to know which remote systems are up, which operating system they are running and what compiler version is installed, netcc manages this.

For more complex networks netcc can use multicast so you only have to set up proper multicast routing and forwarding to use netcc across several networks. SCTP can be used instead of TCP (operating system support required) which allows authentication to prevent abuse. Furthermore netcc can be used in either IPv4 or IPv6 networks.

For further information see the included documentation, especially the man pages. Even though netcc can be run as simple as shown above there is a host of command line options to adapt the operation mode to your requirements.

© 2015 Andreas Steinmetz, - netcc is licensed under the GPL v2 (no other version)