Este conteúdo não está disponível no idioma selecionado.
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 15.0.7.
2.1. Prerequisites Copiar o linkLink copiado para a área de transferência!
-
LLVM Toolset is installed.
For more information, see Installing LLVM Toolset.
2.2. Compiling a source file Copiar o linkLink copiado para a área de transferência!
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 7:
scl enable llvm-toolset-15.0 'clang -o -g <binary_file> <source_file>'
$ scl enable llvm-toolset-15.0 'clang -o -g <binary_file> <source_file>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 8:
clang -o -g <binary_file> <source_file>
$ clang -o -g <binary_file> <source_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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>
$ clang -o -g <binary_file> <source_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 Copiar o linkLink copiado para a área de transferência!
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>
$ ./<binary_file>
-
Replace
<binary_file>
with the name of your executable file.
2.4. Linking object files together Copiar o linkLink copiado para a área de transferência!
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 7:
scl enable llvm-toolset-15.0 'clang -o <object_file> -c <source_file>'
$ scl enable llvm-toolset-15.0 'clang -o <object_file> -c <source_file>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 8:
clang -o <object_file> -c <source_file>
$ clang -o <object_file> -c <source_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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>
$ clang -o <object_file> -c <source_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 7:
scl enable llvm-toolset-15.0 'clang -o <output_file> <object_file_0> <object_file_1>'
$ scl enable llvm-toolset-15.0 'clang -o <output_file> <object_file_0> <object_file_1>'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 8:
clang -o <output_file> <object_file_0> <object_file_1>
$ clang -o <output_file> <object_file_0> <object_file_1>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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>
$ clang -o <output_file> <object_file_0> <object_file_1>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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.