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 19.1.7.

Note

To compile a C++ program, use clang++ instead of clang.

2.1. Prerequisites

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.

Note

To compile a C++ program, use clang++ instead of clang.

Procedure

  • Compile your program:

    $ clang -g -o <binary_file> <source_file>
    Copy to Clipboard Toggle word wrap

    Replace <binary_file> with the name of your output file and <source_file> with the name of your source file.

2.3. Running a program

The Clang compiler creates an executable binary file as a result of compiling. Complete the following steps to run your program.

Prerequisites

Procedure

  • To run your program, enter in the directory containing the executable file:

    $ ./<binary_file>
    Copy to Clipboard Toggle word wrap

    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.

Note

To compile a C++ program, use clang++ instead of clang.

Procedure

  1. Compile a source file to an object file:

    $ clang -o <object_file> -c <source_file>
    Copy to Clipboard Toggle word wrap

    Replace <object_file> with the name of your object file and <source_file> with the name of your source file.

  2. Link object files together:

    $ clang -o <output_file> <object_file_0> <object_file_n>
    Copy to Clipboard Toggle word wrap

    Replace <output_file> with the name of your output file and <object_file> with the names of the object files you want to link.

    Important

    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.

    Do not statically link your entire application.

Back to top
Red Hat logoGithubredditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust. Explore our recent updates.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Theme

© 2025 Red Hat