|
| 1 | + |
| 2 | + distcc -- a free distributed C/C++ compiler system |
| 3 | + |
| 4 | + http://code.google.com/p/distcc/ |
| 5 | + |
| 6 | + by Martin Pool < [email protected]> |
| 7 | + |
| 8 | + "pump" functionality added by |
| 9 | + Fergus Henderson, Nils Klarlund, Manos Renieris, and Craig Silverstein |
| 10 | + (Google Inc.) |
| 11 | + |
| 12 | +distcc is a program to distribute compilation of C or C++ code across |
| 13 | +several machines on a network. distcc should always generate the same |
| 14 | +results as a local compile, is simple to install and use, and is often |
| 15 | +two or more times faster than a local compile. |
| 16 | + |
| 17 | +Unlike other distributed build systems, distcc does not require all |
| 18 | +machines to share a filesystem, have synchronized clocks, or to have |
| 19 | +the same libraries or header files installed. Machines can be running |
| 20 | +different operating systems, as long as they have compatible binary |
| 21 | +formats or cross-compilers. |
| 22 | + |
| 23 | +By default, distcc sends the complete preprocessed source code across |
| 24 | +the network for each job, so all it requires of the volunteer machines |
| 25 | +is that they be running the distccd daemon, and that they have an |
| 26 | +appropriate compiler installed. |
| 27 | + |
| 28 | +The distcc "pump" functionality, added in distcc 3.0, improves on |
| 29 | +distcc by distributing not only compilation but also preprocessing to |
| 30 | +distcc servers. This requires that the server and client have the same |
| 31 | +system headers (the client takes responsibility for transmitting |
| 32 | +application-specific headers). Given that, distcc in pump mode yields |
| 33 | +the same results that distcc would in non-pump mode, but faster, since |
| 34 | +the preprocessor no longer runs locally. For more details on the pump |
| 35 | +functionality, see README.pump. |
| 36 | + |
| 37 | +distcc is not itself a compiler, but rather a front-end to the GNU |
| 38 | +C/C++ compiler (gcc), or another compiler of your choice. All the |
| 39 | +regular gcc options and features work as normal. |
| 40 | + |
| 41 | +distcc is designed to be used with GNU make's parallel-build feature |
| 42 | +(-j). Shipping files across the network takes time, but few cycles on |
| 43 | +the client machine. Any files that can be built remotely are |
| 44 | +essentially "for free" in terms of client CPU. This is even more true |
| 45 | +in "pump" mode, where the client does not even have to take time to |
| 46 | +preprocess the source files. distcc has been successfully used in |
| 47 | +environments with hundreds of distcc servers, supporting dozens of |
| 48 | +simultaneous compiles. |
| 49 | + |
| 50 | +distcc is now reasonably stable and can successfully compile the Linux |
| 51 | +kernel, rsync, KDE, GNOME (via GARNOME), Samba and Ethereal. distcc |
| 52 | +is nearly linearly scalable for small numbers of machines: for a |
| 53 | +typical case, three machines are 2.6 times faster than one. |
| 54 | + |
| 55 | +distcc is distributed under the GNU General Public Licence v2. |
0 commit comments