# USE 标志与编译优化

URL: https://caijiao.org/gentoo/use-flags
Source: docs/gentoo/use-flags.md
Description: 本章介绍 Gentoo 系统中的 USE 标志、编译优化和 CFLAGS 设置方法，提升系统性能和定制化。

在完成用户与权限管理后，下一步是 **配置 USE 标志与编译优化**，让 Gentoo 系统根据需求裁剪功能并提升性能。

## 一、USE 标志概述

USE 标志用于控制软件包功能和依赖：

- **全局 USE 标志**：适用于系统中所有软件包，配置在 `/etc/portage/make.conf` 中：

```bash
USE="X gtk qt5 wifi bindist"
````

- **包级 USE 标志**：针对单个软件包，配置在 `/etc/portage/package.use`：

```bash
echo "app-editors/vim python gui" >> /etc/portage/package.use
```

> 💡 使用 USE 标志可以去掉不需要的功能，减少编译时间和磁盘占用。

## 二、编译优化（CFLAGS 与 CXXFLAGS）

CFLAGS 和 CXXFLAGS 控制编译器优化选项：

```bash
CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"
```

- `-O2`：优化代码性能
- `-march=native`：针对本机 CPU 指令集优化
- `-pipe`：使用管道提高编译速度

> ⚠️ 不建议使用 `-O3` 或其他激进优化，可能导致不稳定。

## 三、Make.conf 配置示例

在 `/etc/portage/make.conf` 中综合配置示例：

```bash
# 镜像源
GENTOO_MIRRORS="http://mirrors.tuna.tsinghua.edu.cn/gentoo"

# 全局 USE 标志
USE="X gtk qt5 wifi bindist"

# 编译优化
CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"

# 端口树配置
MAKEOPTS="-j$(nproc)"
```

- `MAKEOPTS` 指定并行编译核心数，提高编译效率。

## 四、管理 USE 标志

1. 查看包 USE 标志支持：

```bash
equery uses app-editors/vim
```

2. 查看当前 USE 标志：

```bash
emerge --info | grep USE
```

3. 修改后重新编译软件包：

```bash
emerge --ask --changed-use --deep @world
```

## 五、建议操作

- 根据硬件和需求合理设置 USE 标志
- 定期更新软件包并根据新 USE 调整编译选项
- 使用 `equery` 和 `emerge` 检查和管理 USE 标志
