此内容没有您所选择的语言版本。

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

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

To compile your program, run the following command:

  • On Red Hat Enterprise Linux 7:

    $ scl enable llvm-toolset-12.0 'clang -o -g <binary_file> <source_file>'
    Copy to Clipboard Toggle word wrap
    • Replace <binary_file> with the desired name of your output file and <source_file> with the name of your source file.
  • On Red Hat Enterprise Linux 8:

    $ clang -o -g <binary_file> <source_file>
    Copy to Clipboard Toggle word wrap
    • Replace <binary_file> with the desired name of your output file and <source_file> with the name of your source file.
  • On Red Hat Enterprise Linux 9:

    $ clang -o -g <binary_file> <source_file>
    Copy to Clipboard Toggle word wrap
    • Replace <binary_file> with the desired 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 execute this file and run your program.

Prerequisites

Procedure

To run your program, run 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. To compile a source file to an object file, run the following command:

    • On Red Hat Enterprise Linux 7:

      $ scl enable llvm-toolset-12.0 'clang -o <object_file> -c <source_file>'
      Copy to Clipboard Toggle word wrap
      • Replace <object_file> with the desired name of your object file and <source_file> with the name of your source file.
    • On Red Hat Enterprise Linux 8:

      $ clang -o <object_file> -c <source_file>
      Copy to Clipboard Toggle word wrap
      • Replace <object_file> with the desired name of your object file and <source_file> with the name of your source file.
    • On Red Hat Enterprise Linux 9:

      $ clang -o <object_file> -c <source_file>
      Copy to Clipboard Toggle word wrap
      • Replace <object_file> with the desired name of your object file and <source_file> with the name of your source file.
  2. To link object files together, run the following command:

    • On Red Hat Enterprise Linux 7:

      $ scl enable llvm-toolset-12.0 'clang -o <output_file> <object_file_0> <object_file_1>'
      Copy to Clipboard Toggle word wrap
      • 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.
    • On Red Hat Enterprise Linux 8:

      $ clang -o <output_file> <object_file_0> <object_file_1>
      Copy to Clipboard Toggle word wrap
      • 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.
    • On Red Hat Enterprise Linux 9:

      $ clang -o <output_file> <object_file_0> <object_file_1>
      Copy to Clipboard Toggle word wrap
      • 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.
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.

Red Hat advises to not statically link your entire application.

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat