AUTHOR: Cedric de Wijs cedric.de.wijssofthomenet DATE: 2004-04-09 LICENSE: GNU Public Licence SYNOPSIS: How to install distcc --a free distributed C/C++ compiler system DESCRIPTION: TODO: put some usefull words here ATTACHMENTS: The distcc package, available from: http://distcc.samba.org/ftp/distcc/distcc-2.12.1.tar.bz2 (317,8kB) PREREQUISITES: This hint expect you to have two working lfs systems with the same version of gcc, binutils and glibc, and functional networking HINT: ================= TABLE OF CONTENTS ================= 1 Introduction 2 Required Files 3 Installation server 4 Installation client 5 Usage 6 Pitfalls 7 Recommended reading =============== 1 Introduction =============== Compiling sourcecode can take a long time. This hint describes how to install distcc, a tool that can be used to distribute the compiling across multiple machines in a network. The machine you sit behind and issue the compile from is the client. The machines who are doing the work are the servers. Every machine can contain both a server and a client This text is based upon the documentation of distcc, written by Martin Pool Estimated build time: 0.20 SBU Estimated required disk space: 5.4 MB ================= 2. REQUIRED FILES ================= The distcc package, available from: http://distcc.samba.org/ftp/distcc/distcc-2.12.1.tar.bz2 (317,8kB) =============== 3. Installation =============== To install the package run the following: ./configure --sysconfdir=/etc && make && make install ======================= 3. Configuration server ======================= To make distcc run as a server create a new user. Make sure /tmp is writable by that user: useradd distcc To start the daemon use the following command: nice -n 19 distccd --daemon To make distcc start at boottime use this script: cat > /etc/rc.d/init.d/distcc << "EOF" #!/bin/bash source /etc/sysconfig/rc source $rc_functions case "$1" in start) echo "Starting distributed compile daemon" nice -n 19 /usr/local/bin/distccd --daemon ;; stop) echo "Stopping distributed compile daemon" killproc /usr/local/bin/distccd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac EOF chmod 700 /etc/rc.d/init.d/distcc And make some symlinks to it: cd /etc/rc.d/init.d && ln -sf ../init.d/distcc ../rc0.d/K00distcc && ln -sf ../init.d/distcc ../rc2.d/S99distcc && ln -sf ../init.d/distcc ../rc3.d/S99distcc && ln -sf ../init.d/distcc ../rc5.d/S99distcc && ln -sf ../init.d/distcc ../rc6.d/K00distcc ======================= 4. Configuration client ======================= To make distcc run as a client run the following: ./configure --sysconfdir=/etc && make && make install To let distcc know who the servers are edit the following file: mkdir ~/.distcc && cat > /root/.distcc/hosts << "EOF" localhost #your own machine 192.168.0.201 #the first server, 192.168.0.202 #and the second server EOF To make sure distcc is found before your real compiler, create some symlinks: ln -s /usr/local/bin/distcc /bin/c++ && ln -s /usr/local/bin/distcc /bin/cc && ln -s /usr/local/bin/distcc /bin/g++ && ln -s /usr/local/bin/distcc /bin/gcc ======== 5. Usage ======== Instead of running the following command: ./configure && make && make install Use these commands: ./configure && make -j 6 && make install Every server can handle three clients per CPU unless otherwise configured, so the above comand can fill two servers. =========== 6. Pitfalls =========== Don't use version 1.12. This version contains a bug causing distccd not to run as user distcc. Older and newer versions should work fine ====================== 7. Recommended reading ====================== The documentation included with distcc The following hints: parallelcompiling.txt ACKNOWLEDGEMENTS: The programmer of this utility: Martin Pool The author of parallelcompiling.txt Daniel Baumann CHANGELOG: 2004-04-09 Initial release