Chapter 2. The Clang compiler
Clang is an LLVM compiler front end for the C-based languages C, C++, Objective C/C++, OpenCL, and Cuda.
LLVM Toolset is distributed with Clang 16.0.6.
2.1. Prerequisites
-
LLVM Toolset is installed.
For more information, see Installing LLVM Toolset.
2.2. Compiling a source file
Use the Clang compiler to compile source files as well as assembly language source files. Clang creates an executable binary file as a result of compiling. To be able to debug your code, enable debug information by adding the -g
flag to your Clang commands.
To compile a C++ program, use clang++
instead of clang
.
Procedure
To compile your program, run the following command:
On Red Hat Enterprise Linux 8:
$ clang -o -g <binary_file> <source_file>
-
Replace
<binary_file>
with the desired name of your output file and<source_file>
with the name of your source file.
-
Replace
On Red Hat Enterprise Linux 9:
$ clang -o -g <binary_file> <source_file>
-
Replace
<binary_file>
with the desired name of your output file and<source_file>
with the name of your source file.
-
Replace
2.3. Running a program
The Clang compiler creates an executable binary file as a result of compiling. Complete the following steps to execute this file and run your program.
Prerequisites
-
Your program is compiled.
For more information on how to compile your program, see Compiling a source file.
Procedure
To run your program, run in the directory containing the executable file:
$ ./<binary_file>
-
Replace
<binary_file>
with the name of your executable file.
2.4. Linking object files together
By linking object files together, you can compile only source files that contain changes instead of your entire project.
When you are working on a project that consists of several source files, use the Clang compiler to compile an object file for each of the source files. As a next step, link those object files together. Clang automatically generates an executable file containing your linked object files. After compilation, link your object files together again.
To compile a C++ program, use clang++
instead of clang
.
Procedure
To compile a source file to an object file, run the following command:
On Red Hat Enterprise Linux 8:
$ clang -o <object_file> -c <source_file>
-
Replace
<object_file>
with the desired name of your object file and<source_file>
with the name of your source file.
-
Replace
On Red Hat Enterprise Linux 9:
$ clang -o <object_file> -c <source_file>
-
Replace
<object_file>
with the desired name of your object file and<source_file>
with the name of your source file.
-
Replace
To link object files together, run the following command:
On Red Hat Enterprise Linux 8:
$ clang -o <output_file> <object_file_0> <object_file_1>
-
Replace
<output_file>
with the desired name of your output file and<object_file>
with the names of the object files you want to link.
-
Replace
On Red Hat Enterprise Linux 9:
$ clang -o <output_file> <object_file_0> <object_file_1>
-
Replace
<output_file>
with the desired name of your output file and<object_file>
with the names of the object files you want to link.
-
Replace
At the moment, certain library features are statically linked into applications built with LLVM Toolset to support their execution on multiple versions of Red Hat Enterprise Linux. This creates a small security risk. Red Hat will issue a security erratum in case you need to rebuild your applications due to this risk.
Red Hat advises to not statically link your entire application.
2.5. Additional resources
- For more information on the Clang compiler, see the official Clang compiler documentation.
- To display the manual page included in LLVM Toolset, run:
To compile a C++ program, use clang++
instead of clang
.
On Red Hat Enterprise Linux 8:
$ man clang
On Red Hat Enterprise Linux 9:
$ man clang