Reference articles on history, science, culture and more
Encyclopedia

Distcc

Tool for speeding up code compilation

Image credit is listed at the end of this article.

In software development, distcc is a tool for speeding up compilation of source code by using distributed computing over a computer network. With the right configuration, distcc can dramatically reduce a project's compilation time.

It is designed to work with the C programming language (and its derivatives like C++ and Objective-C) and to use GCC as its backend, though it provides varying degrees of compatibility with the Intel C++ Compiler and Sun Microsystems' Sun Studio Compiler Suite. Distributed under the terms of the GNU General Public License, distcc is free software.

01Design

distcc is designed to speed up compilation by taking advantage of unused processing power on other computers. A machine with distcc installed can send code to be compiled across the network to a computer which has the distccd daemon and a compatible compiler installed.

distcc works as an agent for the compiler. A distcc daemon has to run on each of the participating machines. The originating machine invokes a preprocessor to handle header files, preprocessing directives (such as #ifdef) and the source files and sends the preprocessed source to other machines over the network via TCP either unencrypted or using SSH. Remote machines compile those source files without any local dependencies (such as libraries, header files or macro definitions) to object files and send them back to the originator for further compilation.

distcc version 3 supports a mode (called pump mode) in which included header files are sent to the remote machines, so that preprocessing is also distributed.

Watch videos about DistccExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Distcc, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

  • Distcc3 log and help.png by distcc Copyright (c) 2002-2004 Martin Pool; Incl. miniLZO (c) 1996-2002 Markus Franz Xaver Johannes Oberhumer; Portions 2007-2008 Google, GPL

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.

Continue exploring

Related topics

Compile farm

A compile farm is a server farm, a collection of one or more servers, which has been set up to compile computer programs remotely for various reasons. Uses of a compile farm include: Cross-platform development: When writing software that runs on multiple processor architectures and operating systems, it can be infeasible for each developer to have their own machine for each architecture, for example, one platform might have an expensive or obscure type of CPU. In this scenario, a compile farm is useful as a tool for developers to build and test their software on a shared server running the target operating system and CPU. Compile farms may be preferable to cross-compilation as cross compilers are often complicated to configure, and in some cases compilation is only possible on the target, making cross-compilation impossible.

Altair FlowTracer

Altair FlowTracer, previously known as FlowTracer and Flowtracer/EDA, is a commercial build management tool developed by Altair Engineering. The product was originally developed by Runtime Design Automation before Altair acquired the company.

Incredibuild

Incredibuild is a suite of grid computing software developed by Incredibuild LTD. Incredibuild is designed to help accelerate computationally-intensive tasks by distributing them over the network, with applications including compiling source code, building software generally, and other software development-related tasks. Jobs can be distributed to several computers over a network, giving both the possibility of accelerating the work by using more resources than were available on the initiating computer alone and potentially freeing local resources for other tasks.