How to Compile Software from Source?

Published in

on

If you’re a Debian or Deb-based Linux user looking to explore software that isn’t available in your package manager, compiling from source might be the answer.

Compiling software from source gives you control over the version, configuration options, set of upcoming features, and optimizations.

Compile

Here’s a step-by-step guide to help you compile software from source.

I am a Debian user and use Debian-based Linux, most of my commands will be focused on it, for other distros just modify their action commands.

First Understand, Why Compile from Source?

Before we see how to compile from source, it is equally important to understand why it should be done and what would be its benefits and drawbacks.

  • Access the Latest Version: Often, source code for software is updated faster than package managers. But bugs may also be there.
  • Customizable Options: You can enable or disable features based on your needs. It may take some extra free time to understand them.
  • Optimization: Compiling allows for system-specific optimization.

Also, you need to manage its updates in your own, as no new release will be available for an application or software which are compiled from source.

Step 1: Install Essential Packages.

To compile software from source, you need several development tools, which are grouped under the build-essential package.

To install it, open a terminal and run:

sudo apt update
sudo apt install build-essential

This will install key tools like gcc, g++, make, and other dependencies required for compiling.

Other Required Tools:

  • git (for downloading source code from Git repositories)
  • wget or curl (for downloading tarballs)

Install them with:

sudo apt install git wget curl

Step 2: Install Dependencies.

Each piece of software has its own set of dependencies. These are often listed in the documentation or a README file within the source code.

Here’s an example of how to install dependencies:

sudo apt install libdependency1-dev libdependency2-dev

Use apt search to locate dependencies:

apt search dependency-name

Step 3: Download the Source Code.

You can download source code in several ways:

From a Repository: For GitHub or GitLab projects, use git clone:

git clone https://github.com/username/projectname.git
cd projectname

From a Tarball: For a .tar.gz file, use wget or curl:

wget http://website.com/path/to/software.tar.gz
tar -xzf software.tar.gz
cd software-directory

Step 4: Configure the Build.

Most software packages provide a configuration script, configure, to help prepare for compilation. This script checks for dependencies and prepares the build environment. Inside the software directory, run:

./configure

Customizing the Configure Command:

You can add options to enable or disable specific features. For example:

./configure --enable-feature1 --disable-feature2 --prefix=/usr/local

--prefix=/path sets the installation directory (default is /usr/local).

--enable or --disable options toggle optional features.

Step 5: Compile the Source Code.

Once configured, compile the source code by running make:

make

Depending on your system and the complexity-or-size of the software, this may take a few minutes to an hour.

You may also speed up compilation by specifying the number of cores:

make -j4

Replace 4 with the number of cores your CPU has. So the compiling process will use all the available (or made available) cores and do things faster for you.

Step 6: Install the Software.

After compiling, install the software using make install.

You may need sudo for root access:

sudo make install

This command copies the compiled files to their designated locations, often within /usr/local/ or /usr/bin.

Verify the Installation:

Once installed, you can check the software version to verify installation:

software-name --version

Replace software-name with the actual command.

Step 7: Clean Up.

You can free up space by removing the source files after installation.

Inside the source directory, run:

make clean

Or, delete the entire directory:

cd ..
rm -rf software-directory

Troubleshooting Common Issues.

  • Missing Libraries: Check the README for required libraries, or use apt to install missing ones.
  • Permission Denied: Use sudo for commands requiring root access.
  • Unmet Dependencies: Double-check all dependencies and development libraries.

Benefits of Compiling from Source.

Compiling software from source may be more time-consuming than installing a precompiled package, but it provides a greater understanding of your system and enables fine-grained customization. It’s also a valuable skill for those looking to contribute to open-source projects or develop software on Linux.

End Note.

Compiling software on Debian opens up many possibilities, giving you control over software performance, customization, and access to the latest versions. With a little patience and practice, you’ll master this essential Linux skill!

Leave a Reply

Your email address will not be published. Required fields are marked *