Building under Posix
To build D on POSIX, you will need to have make, g++, libcurl4-openssl-dev, and git installed on your system, as well as a working GitHub account. To install the appropriate dependencies on e.g. Ubuntu:
sudo apt-get install curl git make g++ libcurl4-openssl-dev
On OS X with Homebrew:
$ xcode-select --install $ brew install git openssl
To build the 32-bit phobos on a 64-bit machine, some 32-bit packages are also needed:
sudo apt-get install gcc-multilib libc6-dev-i386 linux-libc-dev:i386 libcurl4-gnutls-dev:i386
Other versions and variations of libcurl may work as well.
Fetch repositories from GitHub =
Let's start by getting the current development (master) branch of the D repositories from GitHub. Assume the root directory for everything D-related is ~/dlang (replace appropriately). This is easily done by running at a command prompt:
cd ~/dlang git clone https://github.com/dlang/dmd git clone https://github.com/dlang/druntime git clone https://github.com/dlang/phobos git clone https://github.com/dlang/tools
After this step completes successfully, the ~/dlang should be up and filled with good stuff.
This step is interesting because in order to build dmd, dmd is necessary. Fortunately, the steps of downloading and using a preexisting dmd compiler are automated. All you need to do is run this command:
cd ~/dlang/dmd make -f posix.mak -j8 AUTO_BOOTSTRAP=1
That's going to take a while. The build produces the compiler binary situated in an OS-dependent directory such as ~/dlang/dmd/generated/linux/release/64/dmd.
To make dmd builds faster in the future, you need to obviate the need for bootstrapping. Install dmd from the download page or simply put the freshly built dmd binary in a place accessible through $PATH (a popular choice is ~/bin).
Most D programs use D's standard library phobos. To build it, run:
cd ~/dlang/phobos make -f posix.mak -j8
The build produces (with similar anticlimacticity) static and shared libraries such as ~/dlang/phobos/generated/linux/release/64/libphobos2.a and ~/code/phobos/generated/linux/release/64/libphobos2.so. As part of the build druntime will be built automatically, e.g. the generated druntime interfaces can be found at ~/dlang/druntime/import. The generated druntime libraries like ~/dlang/druntime/generated/linux/release/64/libdruntime.a get bundled with built phobos libraries.