macOS Golden GateでArduino IDEが動かない!

2026年9月にリリースされたmacOS 27 Golden Gateにアップデートしたところ、Arduino IDEでスケッチをコンパイルしようとすると「bad CPU type in executable」というエラーが出て、コンパイルできなくなりました。

原因は、macOSのアップデートによってRosetta 2が削除されたことです。ターミナルからRosetta 2を再インストールすれば、元どおりコンパイルできるようになります

この記事では、エラーが起きる仕組みと解決方法、そして今後MacでArduinoを使ううえでの注意点を解説します。

目次

確認環境

項目内容
ハードウェアMacBook Pro M2
OSmacOS 27.0 Golden Gate(27.0)
Arduino IDE2.3.10
ArduinoボードArduino Uno R4
コンパイラarm-none-eabi-gcc 7-2017q4

発生したエラー

アップデート前は問題なくコンパイルできていたスケッチでも、検証(コンパイル)ボタンを押すと、出力欄に次のエラーが表示されて失敗します。

fork/exec /Users/ユーザー名/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/bin/arm-none-eabi-g++: bad CPU type in executable
Compilation error: fork/exec /Users/ユーザー名/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/bin/arm-none-eabi-g++: bad CPU type in executable

bad CPU type in executable」は、「実行しようとしたプログラムが使用しているMacのCPUでは動作しない」という意味のエラーです。

エラーに表示されるツールは使っているボードによって異なり、AVRボードではavr-g++が表示されたり、ボードによってはスケッチの前処理で使われるctagsが表示されることもあります。

原因

macOS Golden Gateにアップデートすると「Rosetta 2」が削除されてしまうことが原因です。

Arduino公式のコンパイラはIntel用のバイナリ

Arduino IDEのボードマネージャーでインストールされる公式のコンパイラ(avr-gccarm-none-eabi-gcc)は、macOS向けにはIntel(x86_64)用のバイナリしか提供されていません。今回のエラーに表示されているarm-none-eabi-gcc 7-2017q4も、その一つです。

Appleシリコン搭載のMacでは、こうしたIntel用のプログラムをRosetta 2(以下、Rosetta)という変換の仕組みを使って動かしています。

ところがmacOS 27では、アップデート前にRosettaをインストールしていても、アップデート後は自動で復元されません。その結果、Intel用のコンパイラを起動できなくなり、「bad CPU type in executable」エラーが発生します。

Rosettaのインストール画面が表示されない理由

通常は、Intel用のアプリを開くとmacOSがRosettaのインストールを求めるダイアログを表示します。しかし今回のケースでは、このダイアログは表示されず、いきなりエラーになります。

これは、Appleシリコン版のArduino IDEの本体がネイティブ対応していて、Rosettaがなくても起動できるためです。コンパイラはIDEの内部からサブプロセスとして起動されますが、この場合macOSはインストールのダイアログを出さないので、エラーメッセージだけが表示されます(Arduinoのヘルプセンターでも、このケースではRosettaを手動でインストールするよう案内されています)。

解決方法

「Rosetta」を再インストールすれば、コンパイルできるようになります。

「アプリケーション」フォルダ内の「ユーティリティ」フォルダにある「ターミナル」を開き、次のコマンドを実行します。

softwareupdate --install-rosetta --agree-to-license

--agree-to-licenseは、Appleのソフトウェア使用許諾契約に同意するためのオプションです(付けずに実行してしまった場合は途中で同意を求められるので、Aを入力してReturnキーを押してください)。

Install of Rosetta 2 finished successfully」と表示されれば、インストールは完了です。

Arduino IDEを再起動して、もう一度コンパイルしてみてください。エラーが出ずにコンパイルが完了すれば解決です。

【補足】コンパイラがIntel用か確かめる方法

原因が本当にRosettaだったのかを確かめたい場合は、ターミナルでコンパイラのバイナリを直接調べるとわかります。

最初にコンパイラのあるフォルダに移動し(次のコードの1行目)、fileコマンドでアーキテクチャを確認します(同2行目)。

cd ~/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/bin
file arm-none-eabi-g++

私の環境で実行すると、次のように表示されました。

arm-none-eabi-g++: Mach-O 64-bit executable x86_64

x86_64だけが表示されているので、Intel用のバイナリだと分かります。Appleシリコンにネイティブ対応したバイナリであれば、arm64と表示されます。

続けて、コンパイラを直接実行してみます(コンパイラのバージョンを表示してみる)。

./arm-none-eabi-g++ --version

Rosettaがインストールされていない状態では、ここでも「bad CPU type in executable」と表示されて実行できません。Rosettaをインストールしたあとは、コンパイラのバージョン情報が表示されます。

エラーに表示されたツールがarm-none-eabi-gcc以外の場合は、フォルダのパスとファイル名をエラーメッセージに合わせて読み替えてください。

ほかのボードでもRosettaが必要

Rosettaが必要なのは、arm-none-eabi-gccを使うボードの他にもいろいろあります。

Arduino IDEのAppleシリコン対応状況をまとめたGitHubのIssueによると、2026年9月時点で次のようなツールがまだネイティブ対応していません。

ツール主な用途
ctagsスケッチの前処理(ボードを問わず使用)
avr-gccAVRボード(UNO R3など)のコンパイル
AVRDUDEAVRボードへの書き込み
arm-none-eabi-gccArduino公式のARMボード(UNO R4など)のコンパイル
bossac一部のARMボードへの書き込み
dfu-utilDFU方式での書き込み
OpenOCDデバッグや書き込み

特にctagsは、スケッチ(.ino)をコンパイルするときにボードに関係なく使われます。つまり、ESP32のようにコンパイラ自体はネイティブ対応しているボードでも、Rosettaがないとコンパイルできないことになります。

macOS 27にアップデートしたら、使っているボードにかかわらずRosettaを再インストールしておくとよいと思います。

今後の注意点

Rosettaが使えるのはmacOS 27までです(電子工作系はかなり影響が大きいような気がします…)。

Appleの公式情報によると、次のメジャーリリースであるmacOS 28からはRosettaはメンテナンスされていない一部の古いゲーム向けにしか提供されない予定とのことです。

なんだか不安な状況ですが、Arduinoフォーラムの書き込みによると、macOS 27(Golden Gate)ではRosettaを使えば問題なく、Arduino社が保守している公式のボードパッケージは、Rosettaが使えなくなる前にネイティブ版のツールが提供されるだろうとのことです。

とはいっても、更新が止まっている古いボードパッケージやサードパーティ製のものは対応が遅れそうですよね。

参考リンク

通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
目次