Clang - Arch Linux 中文维基

跳至內容

# Clang

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Clang，最近一次同步於 2025-11-15，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Clang 是基於 LLVM 的 C/C++/Objective C/CUDA 編譯器。最新版本依據 「帶有 LLVM 例外條款的 Apache 2.0 許可證」 分發。

## 安裝

安裝 clang包 軟體包。

## 用 Clang 構建軟體包

本文或本章節可能需要合併到makepkg 。

附註： 用於 makepkg 的編譯器標誌（在 Talk:Clang 中討論）

### 通用配置

要更改構建軟體包時使用的默認編譯器，請 編輯 以下文件：

    /etc/makepkg.conf

    ...
    export CC=clang
    export CXX=clang++

若要使用 `libc++` 替代 GCC 的 `libstdc++` 作為 C++ 標準庫：需先安裝 libc++包 軟體包，再在 `/etc/makepkg.conf` 的 `CXXFLAGS` 中添加 `-stdlib=libc++`。

如需支持連結時優化（LTO）：安裝 lld包 軟體包，再在 `/etc/makepkg.conf` 的 `LDFLAGS` 中添加 `-fuse-ld=lld`。

若以 `debug` 模式構建，還需從 `DEBUG_CFLAGS` 和 `DEBUG_CXXFLAGS` 中移除 `-fvar-tracking-assignments`，因為 Clang 不支持該選項。

注意： 對於指定了 GCC 專屬構建選項的軟體包，可能會出現構建錯誤，此時需編輯源軟體包、PKGBUILD 文件，或注釋掉 `makepkg.conf` 中與 Clang 相關的配置行。

## Qt 軟體包

Qt 軟體包可能需要額外配置。Qt 有預定義的構建配置（稱為 「mkspecs」），在 Linux 上默認使用 GCC。

部分情況下，mkspec 會根據 `CC`/`CXX` 變量自動設置為 `linux-clang`；但在其他情況下（如直接調用 `qmake` 的軟體包）則不會，因此需手動顯式設置：

    /etc/makepkg.conf

    export QMAKESPEC=linux-clang

注意： 部分軟體包需要安裝 llvm包 軟體包，因為 `linux-clang` 配置會使用 `llvm-ar` 等工具。

## Rust 軟體包

當 Clang 被設為系統默認編譯器時，需配置 Rust 使用 Clang 作為連結器 ——Rust 應用構建過程中，常會編譯 C 代碼作為依賴。

配置方法：在 `/etc/makepkg.conf.d/rust.conf` 中指定 Clang（可選指定 lld）。示例（使用 Clang 和 lld）：

    /etc/makepkg.conf.d/rust.conf

    RUSTFLAGS="-Cforce-frame-pointers=yes -Clinker=clang -Clink-arg=-fuse-ld=lld"

## 使用靜態分析工具

要分析項目，只需在構建命令的前面放置`scan-build`。 例如：

    $ scan-build make

提示：如果您的項目已經被編譯，`scan-build`將不會重建，也不會對其進行分析。如需強制重新編譯和分析，請使用`-B`參數：

    $ scan-build make -B

也可針對特定文件進行分析：

    $ scan-build gcc -c t1.c t2.c

## 參見

- Wikipedia: Clang
- scan-build：從命令行運行分析器
- 使用 Clang 編譯 CUDA 代碼

分類：​

- 包開發

隱藏分類：​

- 使用「模板:合併」標記的頁面或章節

Clang
新增話題