# MacOS 环境下从源码编译 OpenOCD

[English]

除了从 Espressif 官方 直接下载 OpenOCD 可执行文件，你还可以选择从源码编译得到 OpenOCD。如果想要快速设置 OpenOCD 而不是自行编译，请备份好当前文件，前往 安装 OpenOCD 章节查阅。

## 下载 OpenOCD 源码

支持 ESP32 的 OpenOCD 源代码可以从乐鑫官方的 GitHub 获得，网址为 https://github.com/espressif/openocd-esp32。请使用以下命令来下载源代码:

    cd ~/esp
    git clone --recursive https://github.com/espressif/openocd-esp32.git

克隆后的源代码被保存在 `~/esp/openocd-esp32` 目录中。

## 安装依赖的软件包

使用 Homebrew 安装编译 OpenOCD 所需的软件包:

    brew install automake libtool libusb wget gcc@4.9 pkg-config

## 构建 OpenOCD

配置和构建 OpenOCD 的流程如下:

    cd ~/esp/openocd-esp32
    ./bootstrap
    ./configure
    make

你可以选择最后再执行 `sudo make install` ，如果你已经安装过别的开发平台的 OpenOCD，请跳过这个步骤，因为它可能会覆盖掉原来的 OpenOCD。

备注

- 如果发生错误，请解决后再次尝试编译，直到 `make` 成功为止。

- 发生 `Unknown command 'raggedright'` 错误可能是因为安装的 `texinfo` 版本不对，或是由于没有将其添加到 PATH 路径。为了解决该问题，在运行 `./bootstrap` 前，请先运行如下命令确保安装合适版本的 `texinfo` 并将其添加到 PATH 路径:

      brew install texinfo
      export PATH=/usr/local/opt/texinfo/bin:$PATH

- 如果 OpenOCD 存在子模块问题，请 `cd` 到 `openocd-esp32` 目录，并输入 `git submodule update --init` 命令。

- 如果 `./configure` 成功运行，JTAG 被使能的信息会被打印在 `OpenOCD configuration summary` 下面。

- 如果你的设备信息未显示在日志中，请根据 `../openocd-esp32/doc/INSTALL.txt` 文中的描述使用 `./configure` 启用它。

- 有关编译 OpenOCD 的详细信息，请参阅 `openocd-esp32/README.OSX`。

一旦 `make` 过程成功结束，OpenOCD 的可执行文件会被保存到 `~/esp/openocd-esp32/src/openocd` 目录中。

## 下一步

想要进一步配置调试环境，请前往 配置 ESP32 目标板 章节。

此文档对您有帮助吗？

- 反馈已收到，谢谢！
- 如果您有其他意见，欢迎填写乐鑫文档反馈表。

- 我们重视您的反馈。
- 您可以填写乐鑫文档反馈表告诉我们如何改进该文档。