2.4. 将目标文件链接在一起
通过将目标文件链接在一起,您只能编译包含更改的源文件,而不是整个项目。
当您处理由多个源文件组成的项目时,请使用 Clang 编译器为每个源文件编译对象文件。在下一步中,将这些目标文件链接在一起。clang 会自动生成一个包含链接目标文件的可执行文件。编译后,将目标文件再次链接在一起。
要编译 C++ 程序,请使用 clang++
而不是 clang
。
流程
要将源文件编译到目标文件中,请运行以下命令:
在 Red Hat Enterprise Linux 7 上:
$ scl enable llvm-toolset-15.0 'clang -o <object_file> -c <source_file>'
-
将
<object_file
> 替换为对象文件所需的名称,<source_file
> 替换为您的源文件的名称。
-
将
在 Red Hat Enterprise Linux 8 中:
$ clang -o <object_file> -c <source_file>
-
将
<object_file
> 替换为对象文件所需的名称,<source_file
> 替换为您的源文件的名称。
-
将
在 Red Hat Enterprise Linux 9 中:
$ clang -o <object_file> -c <source_file>
-
将
<object_file
> 替换为对象文件所需的名称,<source_file
> 替换为您的源文件的名称。
-
将
要将目标文件链接在一起,请运行以下命令:
在 Red Hat Enterprise Linux 7 上:
$ scl enable llvm-toolset-15.0 'clang -o <output_file> <object_file_0> <object_file_1>'
-
将
<output_file
> 替换为输出文件所需的名称,将 <object_file
> 替换为您要链接的对象文件的名称。
-
将
在 Red Hat Enterprise Linux 8 中:
$ clang -o <output_file> <object_file_0> <object_file_1>
-
将
<output_file
> 替换为输出文件所需的名称,将 <object_file
> 替换为您要链接的对象文件的名称。
-
将
在 Red Hat Enterprise Linux 9 中:
$ clang -o <output_file> <object_file_0> <object_file_1>
-
将
<output_file
> 替换为输出文件所需的名称,将 <object_file
> 替换为您要链接的对象文件的名称。
-
将
目前,某些库功能被静态链接到使用 LLVM Toolset 构建的应用程序,以支持它们在多个 Red Hat Enterprise Linux 版本上执行。这会造成小的安全风险。如果由于这个风险,红帽会在需要重建应用程序时发布安全勘误。
红帽建议不要静态地链接整个应用程序。