distributed builds for C, C++ and Objective C
Find a file
Martin Pool 66bf4c56f6
Merge pull request #531 from wzssyqa/spec-option
Add sysroot option and allow -specs option from compiler
2025-01-25 07:53:41 -08:00
.github Reenable builds CI on pull requests 2025-01-25 07:44:57 -08:00
bench Make the benchmarking script's stdout and stderr line buffered. 2008-08-02 01:30:44 +00:00
contrib The first step of moving everything in the distcc directory to the top 2008-04-11 22:36:40 +00:00
doc Add sysroot option and allow -specs option from compiler 2024-10-11 16:42:34 +08:00
docker Remove libiberty dependency 2025-01-12 08:15:15 -08:00
gnome Fix desktop spec compliance of distccmon-gnome install 2019-09-17 07:00:02 -05:00
include_server Python 3.12 escaped characters update to parse_command.py 2024-09-15 13:09:50 -04:00
lzo fix build 2018-02-25 11:25:00 -08:00
m4 Remove config detection of pthreads, which is not actually used 2025-01-11 19:09:21 -08:00
man Add sysroot option and allow -specs option from compiler 2024-10-11 16:42:34 +08:00
packaging Fix various typos 2020-12-17 22:33:59 -05:00
src News about -specs 2025-01-25 07:43:10 -08:00
test News about -specs 2025-01-25 07:43:10 -08:00
.gitignore gitignore *~ 2025-01-11 18:55:18 -08:00
.travis.yml Go even newer? 2020-05-04 18:11:30 -04:00
AUTHORS Remove Martin Pool's Email Address From AUTHORS File 2019-02-08 11:06:22 +00:00
autogen.sh Address review comments on an earlier change: 2008-04-18 16:01:42 +00:00
ChangeLog Update ChangeLog again. 2011-10-26 12:42:02 +00:00
config.guess fixed for Cygwin 2017-08-09 08:25:09 +01:00
config.sub fixed for Cygwin 2017-08-09 08:25:09 +01:00
configure.ac CI: Install macOS setup tools deps, and run tests 2025-01-12 08:54:59 -08:00
COPYING Initial submission @6805748, not fully baked yet. 2008-03-28 02:48:48 +00:00
find_c_extension.sh Fix broken "make distcheck" 2017-04-29 12:57:02 +02:00
INSTALL Remove libiberty dependency 2025-01-12 08:15:15 -08:00
install-sh Merge configure.ac, distcc/configure.ac, and 2008-04-11 22:20:16 +00:00
Makefile.in CI: Test on macOS 2025-01-12 08:45:59 -08:00
mkinstalldirs Merge configure.ac, distcc/configure.ac, and 2008-04-11 22:20:16 +00:00
NEWS News about -specs 2025-01-25 07:43:10 -08:00
pump.in Fix tests in pump mode 2022-04-29 15:42:28 +02:00
README Remove old samba.org address 2025-01-11 15:56:43 -08:00
README.md Update links from lists.samba.org to github 2024-03-13 04:38:27 +00:00
README.packaging Correct spelling mistakes. (#286) 2018-09-25 19:46:28 +03:00
README.pump Documentation fixes: 2008-05-30 22:57:03 +00:00
TODO Correct spelling mistakes. (#286) 2018-09-25 19:46:28 +03:00
update-distcc-symlinks.py update-distcc-symlinks works on rpm-based distros out of the box now 2021-07-26 14:01:40 +04:00

distcc -- a free distributed C/C++ compiler system

by Martin Pool

Current Documents: https://distcc.github.io/

Formerly http://distcc.org/

"pump" functionality added by Fergus Henderson, Nils Klarlund, Manos Renieris, and Craig Silverstein (Google Inc.)

distcc is a program to distribute compilation of C or C++ code across several machines on a network. distcc should always generate the same results as a local compile, is simple to install and use, and is often two or more times faster than a local compile.

Unlike other distributed build systems, distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed. Machines can be running different operating systems, as long as they have compatible binary formats or cross-compilers.

By default, distcc sends the complete preprocessed source code across the network for each job, so all it requires of the volunteer machines is that they be running the distccd daemon, and that they have an appropriate compiler installed.

The distcc "pump" functionality, added in distcc 3.0, improves on distcc by distributing not only compilation but also preprocessing to distcc servers. This requires that the server and client have the same system headers (the client takes responsibility for transmitting application-specific headers). Given that, distcc in pump mode yields the same results that distcc would in non-pump mode, but faster, since the preprocessor no longer runs locally. For more details on the pump functionality, see README.pump.

distcc is not itself a compiler, but rather a front-end to the GNU C/C++ compiler (gcc), or another compiler of your choice. All the regular gcc options and features work as normal.

distcc is designed to be used with GNU make's parallel-build feature (-j). Shipping files across the network takes time, but few cycles on the client machine. Any files that can be built remotely are essentially "for free" in terms of client CPU. This is even more true in "pump" mode, where the client does not even have to take time to preprocess the source files. distcc has been successfully used in environments with hundreds of distcc servers, supporting dozens of simultaneous compiles.

distcc is now reasonably stable and can successfully compile the Linux kernel, rsync, KDE, GNOME (via GARNOME), Samba and Ethereal. distcc is nearly linearly scalable for small numbers of machines: for a typical case, three machines are 2.6 times faster than one.

Licence

distcc is distributed under the GNU General Public Licence v2.

Resources