dyld cannot loadエラーの原因と対処 — Claude Code
macOSでClaude Codeが「dyld: cannot load」で落ちるのは、OSバージョンがバイナリの要求より古いサインです。2つのエラー文言の見分け方とmacOS 13.0未満での対処をまとめます。
「dyld: cannot load」はmacOSのバージョンが古いサイン
macOSでClaude Codeをインストールまたは実行しようとしたとき、次のようなエラーで止まることがあります。
dyld: Symbol not found
dyld: cannot load
Abort trap: 6dyldはmacOSの動的リンカ(dynamic linker)で、実行ファイルが必要とする共有ライブラリをプロセス起動時に読み込む役割を持ちます。このdyldがエラーを出す場合、原因はほぼ一つに絞れます。ダウンロードされたネイティブバイナリが、実行しているmacOSのバージョンやハードウェアと互換性を持たないということです。表示されるエラー文言は2パターンあり、どちらも根はmacOSのバージョンの古さにあります。エラーメッセージだけを見るとパッケージの破損やネットワークの問題を疑いたくなりますが、dyldという文字列が出ている時点でそれらは可能性から外れます。まず落ち着いて、後述する2つのパターンのどちらに当てはまるかを確認してください。
パターン1 — Symbol not found(libicucore関連)
libicucore(国際化・文字処理のためのシステムライブラリ)への参照でSymbol not foundが出る場合、次のような詳細情報が一緒に表示されます。
dyld: Symbol not found: _ubrk_clone
Referenced from: claude-darwin-x64 (which was built for Mac OS X 13.0)
Expected in: /usr/lib/libicucore.A.dylibwhich was built for Mac OS X 13.0という一文が、バイナリがmacOS 13.0向けにビルドされていることを直接示しています。実行しているmacOSがそれより古いバージョンだと、バイナリが要求するシンボル(関数や変数の実体)がシステムのライブラリに存在せず、この形でエラーになります。
パターン2 — cannot load(load command関連)
もう一つのパターンは、ローダーがバイナリの読み込みコマンド自体を拒否するケースです。
dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)
Abort trap: 6load commandはMach-O形式の実行ファイルがOSに対して「このバイナリをどう読み込むか」を指示する低レベルの命令列です。新しいmacOS向けにビルドされたバイナリは、古いバージョンのmacOSが理解できない種類のload commandを含むことがあります。ローダーが未知のload commandを検出すると読み込み自体を拒否し、Abort trap: 6という強制終了シグナルとともにプロセスが落ちます。表示される文言はSymbol not foundパターンと異なりますが、原因は同じくOSバージョンの非互換です。
対処 — macOSのバージョンを確認し、更新する
まず、実行しているmacOSのバージョンを確認します。画面左上のAppleメニューから「このMacについて」を選択すると、現在のバージョンが表示されます。ターミナルから確認したい場合は次のコマンドでも取得できます。
sw_vers -productVersionClaude Codeが要求する最低バージョンはmacOS 13.0以降です。表示されたバージョンがこれを下回っている場合、対処は明確で、macOSを13.0以降に更新することです。バイナリが使っているload commandやシステムライブラリのシンボルは、古いmacOSがそもそも実装していない仕組みに依存しているため、Claude Code側の設定変更やダウングレードで回避する方法はありません。
表示された数値が13.0未満であれば、Appleメニューの「システム設定」から「一般」→「ソフトウェアアップデート」を開き、案内に従って更新します。ハードウェアが古くmacOS 13.0以降にアップデートできない場合(Appleの提供終了機種など)は、そのマシンではClaude Codeのネイティブバイナリを動かせません。この場合の唯一の回避策は、macOS 13.0以降が動く別のマシンに乗り換えることです。
更新が完了したら、sw_vers -productVersionで13.0以降になっていることを確認し、Claude Codeのインストールスクリプトを再実行します。
curl -fsSL https://claude.ai/install.sh | bashインストール方法を変えても解決しない
このエラーに遭遇したとき、公式インストーラーではなく別の方法を試したくなるかもしれません。しかし、Homebrewなどの代替インストール方法も、内部的には同じネイティブバイナリをダウンロードします。インストール手順を変えても、配置されるバイナリが要求するmacOSバージョンは変わらないため、dyldのエラー自体は解消しません。macOSのバージョンを上げる以外に確実な解決策はない、という点はAVX非対応時のIllegal instructionエラーと構造が似ています。
どちらのMacを使っているか(Intel / Apple Silicon)は関係あるか
Symbol not foundの例に出てくるclaude-darwin-x64という表記は、Intel Mac向けのバイナリであることを示しています。Apple Silicon(M1以降)のMacではclaude-darwin-arm64のような別バイナリが使われますが、原因の構造(OSバージョンの非互換)はどちらのアーキテクチャでも同じです。Apple Silicon搭載のMacでmacOSのバージョンを上げずにこのエラーに遭遇した場合も、対処はIntel Macと変わらず、macOSを13.0以降に更新することです。つまり、アーキテクチャの違いはエラーの原因究明には関係なく、着目すべきは常にsw_vers -productVersionで確認できるOSバージョンの数値だけです。
claude.ai(ブラウザ版)と何が違うか
ターミナルで使うClaude Codeはネイティブバイナリを直接実行するため、今回のようなOSバージョン非互換の影響を正面から受けます。一方、ブラウザからアクセスするclaude.aiは実行環境がサーバー側にあるため、手元のmacOSバージョンに縛られません。macOSの更新ができない事情がある場合(古いハードウェアでmacOS 13.0以降の要件を満たせない等)は、更新までの間の代替としてclaude.aiの利用を検討できます。ただし、ターミナル操作やファイルシステムへの直接アクセスを前提とした機能は使えないため、恒久的な代替にはなりません。
よくある質問
macOS 13.0ちょうどなら動きますか
動きます。要求されているのは「macOS 13.0以降」なので、13.0そのものも対象に含まれます。エラーが出る場合は13.0未満のバージョン(12系のMontereyやそれ以前)を使っている可能性が高いです。sw_vers -productVersionで正確なバージョン番号を確認してください。
Abort trap: 6だけが表示されてdyld関連の詳細が見えません
ターミナルの表示が省略されている可能性があります。エラー全体を確認するには、claudeコマンドを実行した直後の出力をスクロールしてdyldという文字列を探すか、標準エラー出力をファイルにリダイレクトして確認してください。表示形式が異なっても、Abort trap: 6が出ている時点でmacOSバージョンの非互換を疑うのが最初の一手です。
Rosetta 2を使えば解決しますか
解決しません。Rosetta 2はIntel向けバイナリをApple Siliconで実行するための仕組みで、アーキテクチャの違いを吸収するものです。今回の原因はアーキテクチャではなくmacOSのバージョンそのものが古いことなので、Rosetta 2の有効・無効に関わらず同じエラーが起こります。試しにRosetta 2をインストールしても、このdyldエラーは変化しません。
Xcodeのコマンドラインツールを更新すれば直りますか
直りません。libicucoreはXcodeが提供するライブラリではなく、macOS本体に組み込まれたシステムライブラリです。Xcodeやコマンドラインツールをどれだけ更新しても、OS本体のバージョンが上がらない限りこのライブラリは更新されません。
会社支給のMacでmacOSの更新権限がありません
管理者権限が無いと「システム設定」からの更新自体が実行できないことがあります。この場合、IT管理者にmacOSを13.0以降へ更新してもらうよう依頼する以外に確実な方法はありません。MDM(モバイルデバイス管理)でOSバージョンが固定管理されている環境では、個人の操作だけでは解決できません。依頼する際は、今回のエラーログ(dyldから始まる行)をそのまま共有すると、原因の説明が省け対応が早まります。
npmでインストールした場合もこのエラーは起きますか
起きます。npmパッケージ経由のインストールも、プラットフォームごとのオプション依存パッケージとして同じネイティブバイナリ(@anthropic-ai/claude-code-darwin-arm64や@anthropic-ai/claude-code-darwin-x64)を取得する仕組みなので、インストール方法に関わらず同じmacOSバージョン要件が適用されます。パッケージマネージャーの種類(npm、Homebrew、公式インストールスクリプト)を変える対処は、この根本原因に対しては無力です。
会社支給のMacで社外のインストーラーを使えません
社内配布のMDMパッケージやソフトウェアセンター経由でのみアプリを導入できる環境では、curlを使った公式インストールスクリプトが実行できない場合があります。この場合もIT管理者への相談が必要で、Claude Codeのバージョンとあわせて対応可能なmacOSバージョンの要件を伝えるとスムーズです。
まとめ
macOSでのdyld: Symbol not foundやdyld: cannot loadは、どちらもネイティブバイナリが要求するmacOSバージョンに実機が届いていないサインです。sw_vers -productVersionで現在のバージョンを確認し、13.0未満であればmacOSを更新します。インストール方法をHomebrewなどに変えても同じバイナリを取得するため解決しません。他のOS別インストールエラーはClaude Codeインストールエラーの切り分けチェックリスト、Mac特有のインストール方法の比較はClaude Code Homebrew・npm・ネイティブ導入の比較にまとめています。