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
文件夹和内容。
如果你没有安装gcc(不过应该不太可能,安装gcc
获取文件夹内容,如下:
$ brew install gcc
创建丢失的 /opt/osxcross
文件夹,如下所示:
$ sudo mkdir -p /opt/osxcross/target/bin/../x86_64-apple-darwin12/lib/
请注意,系统会提示您输入密码。
最后,从 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
这样就完成了修复。
您必须重新启动 vscode
、Arduino IDE
或您使用的任何工具。然后构建你的项目,它应该编译成功。
瞧瞧。
安装 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
文件夹和内容。
如果你没有安装gcc(不过应该不太可能,安装
gcc
获取文件夹内容,如下:$ brew install gcc
创建丢失的
/opt/osxcross
文件夹,如下所示:$ sudo mkdir -p /opt/osxcross/target/bin/../x86_64-apple-darwin12/lib/
请注意,系统会提示您输入密码。最后,从 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
这样就完成了修复。
您必须重新启动 vscode
、Arduino IDE
或您使用的任何工具。然后构建你的项目,它应该编译成功。
瞧瞧。