反编译 反编译入门教程_环境配置篇

Markdown (GitHub flavored):
# 说明

这些说明解释了如何设置构建 **pokeemerald** 所需的工具,该工具将源文件组装成 ROM。

这些说明附带了可以通过点击 "<i>注意...</i>" 文本展开的注释。一般来说,除非遇到错误或需要额外的说明,否则不需要打开这些注释。

## Windows

Windows 有三种可能的终端构建说明,提供了三种不同的选项,以防用户遇到意外错误。

- [Windows 10/11 (WSL1)](#windows-1011-wsl1)(**最快,强烈推荐**,仅限 Windows 10 和 11)
- [Windows (msys2)](#windows-msys2)(第二快)
- [Windows (Cygwin)](#windows-cygwin)(最慢)

非科学基准测试表明 **msys2 比 WSL1 慢 2 倍**,而 **Cygwin 比 WSL1 慢 5-6 倍**。

<details>
    <summary><i>高级用户注意:<b>WSL2</b>...</i></summary>

> <b>WSL2</b> 是一个选项,如果文件存储在 WSL2 文件系统上,它甚至比 <b>WSL1</b> 更快,但某些工具可能无法通过网络驱动器与 WSL2 文件系统交互。例如,使用 5.15.2 之前版本的 Qt 的工具(如 <a href="https://github.com/huderlem/porymap">porymap</a>)可能会 <a href="https://bugreports.qt.io/browse/QTBUG-86277">解析 <code>\\wsl$</code> 网络驱动器路径时遇到问题</a>。

</details>

所有 Windows 说明都假设默认驱动器是 C:\\。如果与实际驱动器字母不同,请在阅读说明时将 C 替换为正确的驱动器字母。

**注意**:由于 Windows 7 和 Windows 8 已被微软正式不支持,一些维护者不愿意维护 Windows 7/8 的说明。因此,这些说明可能会在未来中断,修复时间可能比 Windows 10/11 的修复时间更长。

## Windows 10/11 (WSL1)

WSL1 是构建 **pokeemerald** 的首选终端。以下说明将解释如何安装 WSL1(交替称为 WSL)。

- 如果 WSL(Debian 或 Ubuntu)**未安装**,请转到 [安装 WSL1](#安装-wsl1)。
- 否则,如果 WSL 已安装,但**未为其他反编译项目设置**,请转到 [设置 WSL1](#设置-wsl1)。
- 否则,**打开 WSL** 并转到 [选择存储 pokeemerald 的位置(WSL1)](#选择存储-pokeemerald-的位置-wsl1)。

### 安装 WSL1

1. 以管理员身份打开 [Windows Powershell](https://i.imgur.com/QKmVbP9.png),并运行以下命令(在 Powershell 中右键或 Shift+Insert 是粘贴)。

   ```powershell
   wsl --install -d Ubuntu --enable-wsl1
   ```
2. 过程完成后,重新启动计算机。
3. 重新以管理员身份打开 Windows Powershell(重启后),并运行以下命令以将 Ubuntu 配置为使用 WSL1。

   ```powershell
   wsl --set-version Ubuntu 1
   ```

   <details>
        <summary><i>注意...</i></summary>

   > 重启后 WSL 可能会自动打开,但现在可以忽略它。
   >

   </details>

### 设置 WSL1

在继续之前的一些提示:

- 在 WSL 中,复制和粘贴可以通过以下方式完成:
  - **右键单击**(选择 + 右键单击复制,未选择时右键单击粘贴)
  - **Ctrl+Shift+C/Ctrl+Shift+V**(通过右键单击标题栏,转到属性,然后选中“使用 Ctrl+Shift+C/V 作为复制/粘贴”旁边的复选框来启用)。
- 你将运行的一些命令会要求输入你的 WSL 密码和/或确认执行所述操作。这是预期的,只需在必要时输入你的 WSL 密码和/或 yes 操作。

1. 打开 **Ubuntu**(例如使用搜索)。
2. WSL/Ubuntu 在第一次运行时会设置自己的安装。一旦 WSL/Ubuntu 完成安装,它将要求输入用户名和密码。

   <details>
        <summary><i>注意...</i></summary>

   > 输入密码时不会有可见响应,但终端仍会读取输入。
   >

   </details>
3. 在继续之前更新 WSL/Ubuntu。通过运行以下命令来执行此操作。这些命令可能需要很长时间才能完成:

   ```bash
   sudo apt update && sudo apt upgrade
   ```

> 注意:如果你计划构建的存储库有一个**[旧版本的 INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,请从这里按照 [旧版 WSL1 说明](docs/legacy_WSL1_INSTALL.md) 进行操作。

4. 构建 pokeemerald 需要某些软件包。通过运行以下命令安装这些软件包:

   ```bash
   sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
   ```

   <details>
        <summary><i>注意...</i></summary>

   > 如果上述命令不起作用,请尝试将 `apt` 替换为 `apt-get`。
   >

   </details>

### 选择存储 pokeemerald 的位置(WSL1)

WSL 有自己的文件系统,Windows 无法本地访问,但 Windows 文件*可以*从 WSL 访问。因此,你需要将 pokeemerald 存储在 Windows 中。

例如,假设你想将 pokeemerald(和 agbcc)存储在 **C:\Users\\_\<user>_\Desktop\decomps** 中。首先,确保该文件夹已经存在。然后,输入此命令以**更改目录**到该文件夹,其中 *\<user>* 是你的 **Windows** 用户名:

```bash
cd /mnt/c/Users/<user>/Desktop/decomps
```

<details>
    <summary><i>注意...</i></summary>

> 注意 1:Windows C:\ 驱动器在 WSL 中称为 /mnt/c/。
> 注意 2:如果路径中有空格,则路径必须用引号括起来,例如 `cd "/mnt/c/users/<user>/Desktop/decomp folder"`。
> 注意 3:Windows 路径名不区分大小写,因此不需要遵守大小写规则。

</details>

如果这有效,请继续 [安装](#安装)。

否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md)),或继续阅读下面的 [使用 msys2 的 Windows 说明](#windows-msys2)。

## Windows (msys2)

- 如果 devkitARM **未安装**,请转到 [安装 devkitARM](#安装-devkitarm)。
- 如果 devkitARM 已安装,但 msys2 **未为其他反编译项目设置**,请转到 [设置 msys2](#设置-msys2)。
- 否则,**打开 msys2** 并转到 [选择存储 pokeemerald 的位置(msys2)](#选择存储-pokeemerald-的位置-msys2)。

### 安装 devkitARM

1. 在 [这里](https://github.com/devkitPro/installer/releases) 下载 devkitPro 安装程序。
2. 运行 devkitPro 安装程序。在“选择组件”屏幕中,取消选中除 GBA Development 之外的所有选项,除非你计划为其他目的安装其他 devkitPro 组件。将安装位置保持为 C:\devkitPro 并保持开始菜单选项不变。

### 设置 msys2

请注意,在 msys2 中,复制是 Ctrl+Insert,粘贴是 Shift+Insert。

1. 在 C:\devkitPro\msys2\msys2_shell.bat 打开 msys2。
2. 构建 pokeemerald 需要某些软件包。通过运行以下两个命令安装这些软件包:

   ```bash
   pacman -Sy msys2-keyring
   pacman -S make gcc zlib-devel git
   ```

   <details>
        <summary><i>注意...</i></summary>

   > 这些命令会要求确认,只需在提示时输入 yes 操作。
   >

   </details>
3. 下载 [libpng](https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.xz/download)。
4. 更改目录到 libpng 下载的位置。默认情况下,msys2 将在当前用户的配置文件文件夹中启动,位于 **C:\Users\\_\<user>_**,其中 *\<user>* 是你的 Windows 用户名。在大多数情况下,libpng 应该保存在配置文件文件夹的子文件夹中。例如,如果 libpng 保存在 **C:\Users\\_\<user>_\Downloads**(大多数用户的下载位置),请输入以下命令:

   ```bash
   cd Downloads
   ```

   <details>
        <summary><i>注意...</i></summary>

   > 注意 1:虽然未显示,但 msys 使用正斜杠 `/` 而不是反斜杠 `\` 作为目录分隔符。
   > 注意 2:如果路径中有空格,则路径必须用引号括起来,例如 `cd "Downloads/My Downloads"`。
   > 注意 3:Windows 路径名不区分大小写,因此不需要遵守大小写规则。
   > 注意 4:如果 libpng 保存在其他位置,则需要指定 libpng 下载位置的完整路径,例如 `cd c:/devkitpro/msys2` 如果它保存在那里。
   >

   </details>
5. 运行以下命令解压并安装 libpng。

   ```bash
   tar xf libpng-1.6.37.tar.xz
   cd libpng-1.6.37
   ./configure --prefix=/usr
   make check
   make install
   ```
6. 最后,运行以下命令更改回用户配置文件文件夹。

   ```bash
   cd
   ```

### 选择存储 pokeemerald 的位置(msys2)

此时,你可以选择一个文件夹来存储 pokeemerald。如果你愿意将 pokeemerald 存储在用户配置文件文件夹中,请继续 [安装](#安装)。否则,你需要考虑更改目录到 pokeemerald 文件夹时 pokeemerald 的存储位置。

例如,如果你想将 pokeemerald(和 agbcc)存储在 **C:\Users\\_\<user>_\Desktop\decomps** 中(其中 *\<user>* 是你的 **Windows** 用户名),请输入以下命令:

```bash
cd Desktop/decomps
```

如果这有效,请继续 [安装](#安装)。

否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md)),或继续阅读下面的 [使用 Cygwin 的 Windows 说明](#windows-cygwin)。

## Windows (Cygwin)

1. 如果 devkitARM **未安装**,请按照 msys2 设置中用于 [安装 devkitARM](#安装-devkitarm) 的说明进行操作。*记住不要错误地继续遵循 msys2 说明!*
2. - 如果 Cygwin **未安装**,或未安装所有必需的软件包,请转到 [安装 Cygwin](#安装-cygwin)。
   - 如果 Cygwin 已安装,但**未配置为与 devkitARM 一起工作**,请转到 [为 Cygwin 配置 devkitARM](#为-cygwin-配置-devkitarm)。
   - 否则,**打开 Cygwin** 并转到 [选择存储 pokeemerald 的位置(Cygwin)](#选择存储-pokeemerald-的位置-cygwin)

### 安装 Cygwin

1. 下载 [Cygwin](https://cygwin.com/install.html):64 位 Windows 使用 setup-x86_64.exe,32 位使用 setup-x86.exe。
2. 运行 Cygwin 安装程序。在 Cygwin 安装程序中,保持默认设置,直到“选择下载站点”屏幕。
3. 在“选择下载站点”中,从可用下载站点中选择任何镜像。
4. 在“选择软件包”中,将视图设置为“完整”(左上角),并搜索以下软件包:

   - `make`
   - `git`
   - `gcc-core`
   - `gcc-g++`
   - `libpng-devel`

   要快速找到这些,请使用搜索栏并输入每个软件包的名称。确保所选软件包名称与要下载的软件包名称**完全相同**,例如 `cmake` **不是** `make`。
5. 对于每个软件包,双击每个软件包旁边的“**跳过**”文本以选择要安装的最新版本。如果文本显示为“**跳过**”以外的任何内容(例如保持或版本号),则该软件包已安装或将被安装,你无需执行任何操作。
6. 选择所有必需的软件包后,完成安装。

### 为 Cygwin 配置 devkitARM

请注意,在 Cygwin 中,复制是 Ctrl+Insert,粘贴是 Shift+Insert。

1. 打开 **Cygwin**。
2. 运行以下命令以配置 devkitPro 以与 Cygwin 一起工作。

   ```bash
   export DEVKITPRO=/cygdrive/c/devkitpro
   echo export DEVKITPRO=$DEVKITPRO >> ~/.bashrc
   export DEVKITARM=$DEVKITPRO/devkitARM
   echo export DEVKITARM=$DEVKITARM >> ~/.bashrc
   ```

   <details>
        <summary><i>注意...</i></summary>

   > 如果驱动器字母不是 c,请将驱动器字母 c 替换为实际的驱动器字母。
   >

   </details>

### 选择存储 pokeemerald 的位置(Cygwin)

Cygwin 有自己的文件系统,位于 Windows 中,位于 **C:\cygwin64\home\\_\<user>_**。如果你不想将 pokeemerald 存储在那里,则需要考虑更改目录到 pokeemerald 文件夹时 pokeemerald 的存储位置。

例如,如果你想将 pokeemerald(和 agbcc)存储在 **C:\Users\\_\<user>_\Desktop\decomps** 中,请输入以下命令,其中 *\<user>* 是你的 **Windows** 用户名:

```bash
cd c:/Users/<user>/Desktop/decomps
```

请注意,目录**必须存在**于 Windows 中。如果你想将 pokeemerald 存储在一个不存在的专用文件夹中(例如上面提供的示例),请在执行 `cd` 命令之前创建该文件夹(例如使用 Windows 资源管理器)。

<details>
    <summary><i>注意...</i></summary>

> 注意 1:如果路径中有空格,则路径必须用引号括起来,例如 `cd "c:/users/<user>/Desktop/decomp folder"`。
> 注意 2:Windows 路径名不区分大小写,因此不需要遵守大小写规则。

</details>

如果这有效,请继续 [安装](#安装)。否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md))。

## macOS

1. 如果未安装 Xcode 命令行工具,请在 [这里](https://developer.apple.com/xcode/resources/) 下载工具,打开终端,并运行以下命令:

   ```bash
   xcode-select --install
   ```
2. - 如果 libpng **未安装**,请转到 [安装 libpng(macOS)](#安装-libpng-macos)。
   - 如果 devkitARM **未安装**,请转到 [安装 devkitARM(macOS)](#安装-devkitarm-macos)。
   - 否则,**打开终端**并转到 [选择存储 pokeemerald 的位置(macOS)](#选择存储-pokeemerald-的位置-macos)

### 安装 libpng(macOS)

<details>
    <summary><i>高级用户注意...</i></summary>

> 本指南通过 Homebrew 安装 libpng,因为这是最简单的方法,但高级用户可以通过其他方式安装 libpng,如果他们愿意的话。

</details>

1. 打开终端。
2. 如果未安装 Homebrew,请按照网站上的说明安装 [Homebrew](https://brew.sh/)。
3. 运行以下命令安装 libpng。

   ```bash
   brew install libpng
   ```

   libpng 现已安装。

   如果 **devkitARM 未安装**,请继续 [安装 devkitARM(macOS)](#安装-devkitarm-macos),否则,请转到 [选择存储 pokeemerald 的位置(macOS)](#选择存储-pokeemerald-的位置-macos)。

### 安装 devkitARM(macOS)

1. 从 [这里](https://github.com/devkitPro/pacman/releases) 下载 `devkitpro-pacman-installer.pkg` 包。
2. 打开包以安装 devkitPro pacman。
3. 在终端中,运行以下命令安装 devkitARM:

   ```bash
   sudo dkp-pacman -Sy
   sudo dkp-pacman -S gba-dev
   sudo dkp-pacman -S devkitarm-rules
   ```

   带有 gba-dev 的命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
4. 工具安装完成后,必须使 devkitARM 可由系统从任何位置访问。为此,运行以下命令:

   ```bash
   export DEVKITPRO=/opt/devkitpro
   echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
   export DEVKITARM=$DEVKITPRO/devkitARM
   echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc

   echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile
   ```

### 选择存储 pokeemerald 的位置(macOS)

此时,你可以选择一个文件夹来存储 pokeemerald。如果你愿意将 pokeemerald 存储在用户文件夹中,请继续 [安装](#安装)。否则,你需要考虑更改目录到 pokeemerald 文件夹时 pokeemerald 的存储位置。

例如,如果你想将 pokeemerald(和 agbcc)存储在 **~/Desktop/decomps** 中,请输入此命令以**更改目录**到所需文件夹:

```bash
cd Desktop/decomps
```

请注意,目录**必须存在**于文件夹系统中。如果你想将 pokeemerald 存储在一个不存在的专用文件夹中(例如上面提供的示例),请在执行 `cd` 命令之前创建该文件夹(例如使用 Finder)。

<details>
    <summary><i>注意...</i></summary>

> 注意:如果路径中有空格,则路径必须用引号括起来,例如 `cd "Desktop/decomp folder"`

</details>

如果这有效,请继续 [安装](#安装)。否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md))。

## Linux

打开终端并输入以下命令,具体取决于你使用的发行版。

### 基于 Debian/Ubuntu 的发行版

运行以下命令安装所需的软件包:

```bash
sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
```

然后继续 [选择存储 pokeemerald 的位置(Linux)](#选择存储-pokeemerald-的位置-linux)。

<details>
    <summary><i>旧版存储库注意...</i></summary>

> 如果你计划构建的存储库有一个**[旧版本的 INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
> 那么你将不得不安装 devkitARM。安装上述所有软件包,除了 binutils-arm-none-eabi,并按照说明
> [在基于 Debian/Ubuntu 的发行版上安装 devkitARM](#在基于-debianubuntu-的发行版上安装-devkitarm)。

</details>

### Arch Linux

以 root 身份运行此命令以安装所需的软件包:

```bash
pacman -S base-devel arm-none-eabi-binutils git libpng
```

然后继续 [选择存储 pokeemerald 的位置(Linux)](#选择存储-pokeemerald-的位置-linux)。

<details>
    <summary><i>旧版存储库注意...</i></summary>

> 如果你计划构建的存储库有一个**[旧版本的 INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
> 那么你将不得不安装 devkitARM。安装上述所有软件包,除了 binutils-arm-none-eabi,并按照说明
> [在 Arch Linux 上安装 devkitARM](#在-arch-linux-上安装-devkitarm)。

</details>

### NixOS

运行以下命令以启动具有所需软件包的交互式 shell:

```bash
nix-shell -p pkgsCross.arm-embedded.stdenv.cc git pkg-config libpng
```

然后继续 [选择存储 pokeemerald 的位置(Linux)](#选择存储-pokeemerald-的位置-linux)。

### 其他发行版

_(非常感谢其他发行版的具体说明!)_

1. 尝试在其存储库中找到所需的软件:

   - `gcc`
   - `g++`
   - `make`
   - `git`
   - `libpng-dev`
2. 按照 [此处](https://devkitpro.org/wiki/devkitPro_pacman) 的说明安装 devkitPro pacman。提醒一下,目标是配置现有的 pacman 安装以识别 devkitPro 的存储库。
3. 一旦配置了 devkitPro pacman,运行以下命令:

   ```bash
   sudo pacman -Sy
   sudo pacman -S gba-dev
   ```

   最后一个命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。

### 选择存储 pokeemerald 的位置(Linux)

此时,你可以选择一个文件夹来存储 pokeemerald(和 agbcc)。如果是这样,你将不得不考虑更改目录到 pokeemerald 文件夹时修改后的文件夹路径。

如果这有效,请继续 [安装](#安装)。否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md))。

## 安装

<details>
    <summary><i>Windows 用户注意...</i></summary>

> 考虑使用 [这些说明](https://support.microsoft.com/help/4028485) 在 Windows 安全性中为 `pokeemerald` 和/或 `decomps` 文件夹添加例外。这可以防止 Microsoft Defender 扫描它们,从而可能提高构建时的性能。

</details>

1. 如果尚未下载 pokeemerald(某些用户可能更喜欢通过 git 客户端(如 GitHub Desktop)下载 pokeemerald),请运行:

   ```bash
   git clone https://github.com/pret/pokeemerald
   ```

   <details>
        <summary><i>WSL1 注意...</i></summary>

   > 如果你收到错误消息 `fatal: could not set 'core.filemode' to 'false'`,请运行以下命令:
   >
   > ```bash
   > cd
   > sudo umount /mnt/c
   > sudo mount -t drvfs C: /mnt/c -o metadata,noatime
   > cd <存储 pokeemerald 的文件夹>
   > ```
   >
   > 其中 *\<存储 pokeemerald 的文件夹>* 是 [你选择存储 pokeemerald 的位置](#选择存储-pokeemerald-的位置-wsl1) 的路径。然后再次运行 `git clone` 命令。
   >

   </details>
2. 将 agbcc 安装到 pokeemerald 中。运行的命令取决于某些条件。**你应该只遵循列出的一个说明**:

- 如果 agbcc **未在你选择存储 pokeemerald 的文件夹中构建过**,请运行以下命令以构建并安装到 pokeemerald 中:

  ```bash
  git clone https://github.com/pret/agbcc
  cd agbcc
  ./build.sh
  ./install.sh ../pokeemerald
  ```
- **否则**,如果 agbcc 已构建过(例如,如果上述 git clone 失败),但**最后一次构建是在与当前使用的终端不同的终端上**(仅适用于 Windows,例如从 msys2 切换到 WSL1),请运行以下命令以构建并安装到 pokeemerald 中:

  ```bash
  cd agbcc
  git clean -fX
  ./build.sh
  ./install.sh ../pokeemerald
  ```
- **否则**,如果 agbcc 已在同一终端上构建过,请运行以下命令将 agbcc 安装到 pokeemerald 中:

  ```bash
  cd agbcc
  ./install.sh ../pokeemerald
  ```
  <details>
        <summary><i>注意...</i></summary>

    > 如果构建 agbcc 或 pokeemerald 结果出错,请尝试删除 agbcc 文件夹并重新安装 agbcc,就像它从未构建过一样。
  </details>

  3. 一旦安装了 agbcc,请更改目录回到存储 pokeemerald 和 agbcc 的基本目录:

     ```bash
     cd ..
     ```
现在你已经准备好 [构建 **pokeemerald**](#构建-pokeemerald)

## 构建 pokeemerald

如果你还不在 pokeemerald 目录中,请**更改目录**到 pokeemerald 文件夹:

```bash
cd pokeemerald
```
要构建 **pokeemerald.gba**(注意:要加快构建速度,请参见 [并行构建](#并行构建)):

```bash
make
```
如果构建成功,你将在项目文件夹中获得输出文件 **pokeemerald.gba**。

<details>
<summary>Windows 注意...</summary>
> 如果你自上次构建以来切换了终端(例如从 msys2 切换到 WSL1),你必须在任何后续 `make` 命令之前运行 `make clean-tools` 一次。
</details>

# 构建指南

## 并行构建

有关更多信息,请参见 [GNU 文档](https://www.gnu.org/software/make/manual/html_node/Parallel.html) 和 [此 Stack Exchange 线程](https://unix.stackexchange.com/questions/208568)。

要加快构建速度,首先通过运行以下命令获取 `nproc` 的值:

```bash
nproc
```
然后通过运行以下命令加快构建速度:

```bash
make -j<output of nproc>
```
将 `<output of nproc>` 替换为 `nproc` 命令返回的数字。

`nproc` 在 macOS 上不可用。替代方法是 `sysctl -n hw.ncpu`([相关 Stack Overflow 线程](https://stackoverflow.com/questions/1715580))。

## 将 ROM 与原版进行比较

为了贡献,或者如果你只是想验证你的 ROM 是否与原版游戏相同,请运行:

```bash
make compare
```
如果匹配,你将在输出的末尾看到以下内容:

```bash
pokeemerald.gba: OK
```
如果与原版游戏有任何更改,你将看到:

```bash
pokeemerald.gba: FAILED
shasum: WARNING: 1 computed checksum did NOT match
```
## devkitARM 的 C 编译器

该项目支持 devkitARM 附带的 `arm-none-eabi-gcc` 编译器。如果 devkitARM(即 gba-dev)已作为特定平台说明的一部分安装,只需运行:

```bash
make modern
```
否则,请按照以下说明安装 devkitARM。

### 在 WSL1 上安装 devkitARM

1. 必须先安装 `gdebi-core` 以便安装 devkitPro pacman(它有助于安装 devkitARM)。通过运行以下命令安装它:

   ```bash
   sudo apt install gdebi-core
   ```
   <details>
        <summary><i>注意...</i></summary>

   > 如果上述命令不起作用,请尝试将 `apt` 替换为 `apt-get`。
   >

   </details>
2. 一旦 `gdebi-core` 安装完成,从 [这里](https://github.com/devkitPro/pacman/releases) 下载 devkitPro pacman 包。要下载的文件是 `devkitpro-pacman.amd64.deb`。
3. 更改目录到包下载的位置。例如,如果包文件保存在 **C:\Users\\_\<user>_\Downloads**(大多数用户的下载位置),请输入此命令,其中 *\<user>* 是你的 **Windows** 用户名:

   ```bash
   cd /mnt/c/Users/<user>/Downloads
   ```
4. 一旦目录更改为包含 devkitPro pacman 包的文件夹,运行以下命令安装 devkitARM。

   ```bash
   sudo gdebi devkitpro-pacman.amd64.deb
   sudo dkp-pacman -Sy
   sudo dkp-pacman -S gba-dev
   ```
   最后一个命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。

   <details>
        <summary><i>注意...</i></summary>

   > 注意:`devkitpro-pacman.amd64.deb` 是下载的 devkitPro 包的预期文件名(用于第一个命令)。如果下载的包文件名不同,请使用该文件名。
   >

   </details>
5. 运行以下命令设置与 devkitPro 相关的环境变量(或者,关闭并重新打开 WSL):

   ```bash
   source /etc/profile.d/devkit-env.sh
   ```

devkitARM 现已安装。

### 在基于 Debian/Ubuntu 的发行版上安装 devkitARM

1. 如果未安装 `gdebi-core`,请运行以下命令:

   ```bash
   sudo apt install gdebi-core
   ```
2. 从 [这里](https://github.com/devkitPro/pacman/releases) 下载 devkitPro pacman 包。要下载的文件是 `devkitpro-pacman.amd64.deb`。
3. 更改目录到包下载的位置。然后,运行以下命令安装 devkitARM:

   ```bash
   sudo gdebi devkitpro-pacman.amd64.deb
   sudo dkp-pacman -Sy
   sudo dkp-pacman -S gba-dev
   ```
   最后一个命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。

   > 注意:`devkitpro-pacman.amd64.deb` 是下载的 devkitPro 包的预期文件名(用于第一个命令)。如果下载的包文件名不同,请使用该文件名。
   >
4. 运行以下命令设置与 devkitPro 相关的环境变量(或者,关闭并重新打开终端):

   ```bash
   source /etc/profile.d/devkit-env.sh
   ```

devkitARM 现已安装。

### 在 Arch Linux 上安装 devkitARM

1. 按照 [devkitPro 的说明](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) 配置 `pacman` 以下载 devkitPro 软件包。
2. 安装 `gba-dev`:以 root 身份运行以下命令。

   ```console
   pacman -S gba-dev
   ```
   这将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
3. 运行以下命令设置与 devkitPro 相关的环境变量(或者,关闭并重新打开终端):

   ```bash
   source /etc/profile.d/devkit-env.sh
   ```

devkitARM 现已安装。

### 其他工具链

要使用 devkitARM 以外的工具链进行构建,请使用包含 `bin` 子目录的工具链路径覆盖 `TOOLCHAIN` 环境变量。

```bash
make TOOLCHAIN="/path/to/toolchain/here"
```
以下是一个示例:

```bash
make TOOLCHAIN="/usr/local/arm-none-eabi"
```
要使用此工具链编译 `modern` 目标,必须存在 `lib`、`include` 和 `arm-none-eabi` 子目录。

### 使用现代工具链构建带有调试信息的

要使用现代工具链构建带有调试符号的 **pokeemerald.elf**:

```bash
make modern DINFO=1
```
请注意,这对于非现代构建不是必需的,因为这些构建默认带有调试符号。

# 有用的附加工具

* [porymap](https://github.com/huderlem/porymap) 用于查看和编辑地图
* [poryscript](https://github.com/huderlem/poryscript) 用于脚本编写([VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=karathan.poryscript))
* [Tilemap Studio](https://github.com/Rangi42/tilemap-studio) 用于查看和编辑 tilemaps
 

在线成员

现在没有成员在线。

最新帖子

论坛统计

主题
540
消息
2,458
成员
3,089
最新成员
未白镇——诺亚