LLVM/Clang

Please answer the following questions. Use the term "Free Software" vice "open source" and GNU/Linux" vice "Linux" unless you are referring to the Linux kernel.

  1. What is LLVM and what problem does it solve?
  2. What is Clang and what problem does it solve?
  3. Are LLVM and Clang Free Software? If yes, under what license?
  4. How would I install LLVM/Clang on a modern Debian-based distribution?
  5. How would I install LLVM/Clang on a modern RHEL-based distribution?
  6. Please show me the LLVM/Clang commands that I would use compile a C++ program from the C++ source file program.cpp. Assume that I am running a modern Fedora workstation.

What is LLVM and what problem does it solve?

LLVM, the Low Level Virtual Machine, is a Free Software collection of compiler infrastructure and tools. It tackles the challenge of creating efficient compilers for various programming languages and targets. It acts as a backend, providing optimization, code generation, and runtime support for different architectures. Think of it as a versatile platform for compilers to build upon.

What is Clang and what problem does it solve?

Clang is a Free Software compiler front-end primarily designed for the C, C++, Objective-C, and Objective-C++ languages. It integrates with LLVM, utilizing its backend for optimization and code generation. Clang addresses the need for a high-quality, modular, and modern compiler with advanced diagnostics and code analysis capabilities.

Are LLVM and Clang Free Software? If yes, under what license?

Yes, both LLVM and Clang are Free Software licensed under the Apache License 2.0 with LLVM Exceptions. This allows for free use, modification, and distribution with certain conditions that protect the project's integrity.

Installation on Debian-based and RHEL-based distributions:

Debian/Ubuntu:

1. Open a terminal and update package lists:

sudo apt update

2. Install LLVM and Clang:

sudo apt install llvm clang

RHEL/CentOS/Fedora:

1. Install the development tools:

sudo dnf install gcc-c++ devtoolset-X -y

Replace X with the latest available devtoolset version (e.g., 11).

2. Switch to the devtoolset environment:

source /opt/rh/devtoolset-X/enable

3. Install LLVM and Clang:

sudo dnf install llvm-toolchain clang -y

Compiling a C++ program on Fedora:

On Fedora, using the devtoolset environment, you can compile program.cpp with Clang:

clang++ -o program program.cpp

This generates an executable named program. To run it:

./program