Espressif 工具链在 macOS Monterey 12.3 beta 3 安装后损坏

Espressif tool chain broken after macOS Monterey 12.3 beta 3 install

安装 Monterey 12.3 beta 2 后,Espressif 工具链损坏。如果您使用 platformIO 编译,您将收到以下错误:

               ^
Linking .pio/build/esp32dev/firmware.elf
/Users/stephanedeluca/.platformio/packages/toolchain-xtensa32/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: /Users/stephanedeluca/.platformio/packages/toolchain-xtensa32/bin/../libexec/gcc/xtensa-esp32-elf/5.2.0/liblto_plugin.so: error loading plugin: dlopen(/Users/stephanedeluca/.platformio/packages/toolchain-xtensa32/bin/../libexec/gcc/xtensa-esp32-elf/5.2.0/liblto_plugin.so, 0x0002): Library not loaded: /opt/osxcross/target/bin/../x86_64-apple-darwin12/lib/libstdc++.6.dylib
  Referenced from: /Users/stephanedeluca/.platformio/packages/toolchain-xtensa32/libexec/gcc/xtensa-esp32-elf/5.2.0/liblto_plugin.0.so
  Reason: tried: '/opt/osxcross/target/bin/../x86_64-apple-darwin12/lib/libstdc++.6.dylib' (no such file)
collect2: error: ld returned 1 exit status
*** [.pio/build/esp32dev/firmware.elf] Error 1

看我的Mac,没有/opt/osxcross。

我搜索了另一个 Mac 的 beta 1,其中工具链在文件夹存在的情况下仍在工作,你猜怎么着?!有 none!

知道测试版实际上破坏了什么吗?

最后,这里有一个解决方法:我们将提供缺少的 /opt/osxcross 文件夹和内容。

  1. 如果你没有安装gcc(不过应该不太可能,安装gcc获取文件夹内容,如下: $ brew install gcc

  2. 创建丢失的 /opt/osxcross 文件夹,如下所示: $ sudo mkdir -p /opt/osxcross/target/bin/../x86_64-apple-darwin12/lib/ 请注意,系统会提示您输入密码。

  3. 最后,从 gcc 构建中复制文件夹内容,如下所示: $ sudo cp /usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libstdc++.6.dylib /opt/osxcross/target/x86_64-apple-darwin12/lib/libstdc++.6.dylib

这样就完成了修复。

您必须重新启动 vscodeArduino IDE 或您使用的任何工具。然后构建你的项目,它应该编译成功。

瞧瞧。