Techioz Blog

macOS Mojave の「ruby/config.h」ファイルが見つかりません

概要

macOS Mojave(10.14.1) 上で Ruby support(–enable-rubyinterp) を使用して vim(8.1.0509) をビルドしようとすると、次のエラーが発生します。

In file included from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10: fatal error:
      'ruby/config.h' file not found
#include "ruby/config.h"

Xcode10.1をインストールしました。

xcode-select -p
/Applications/Xcode.app/Contents/Developer

解決策

注: この回避策は機能しますが、パスをやみくもにコピー/貼り付けすることはできません。代わりに、インストール時に発生したエラーを確認してください。それは次のようなことを言います

そこで、記載されているログを開いて、何が見つからないかを確認してください。リンクする必要がある MacOSX_..sdk と universal-darwin-__ の正しいバージョンが表示されます。

Catalina、Big Surなど(2020年、2021年、2022年、2023年現在)

更新: この回避策は 2023 年の時点でも機能します。以下のコマンドについては、macOS のバージョン環境に応じてバージョン文字列 (例: 11.1、ruby 2.6、universal-darwin20 など) を変更してください。

macOS と Xcode の最近のバージョン (Catalina 10.15 や Xcode 12.2 など) では、これが壊れています。 Xcode と xcode-select –install を再インストールしても、まったく役に立ちませんでした (すでに投稿されている解決策は古いようです)。 RVM は厄介な問題を引き起こす可能性があるため、使いたくありませんでした。

手動でシンボリックリンクを作成することで回避策を実行しました。

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby
ln -sf ../../../../Headers/ruby/config.h

Ruby/config.h は次の場所にあります。 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/Headers/ruby/config.h。

現在の xcode インストールに応じて SDK バージョン (例: 上記の例では 11.1) を変更する必要があります。

また、 …/universal-darwin19/ruby/config.h が見つからない (Commonmark gem がインストールできない (jekyll MacOS に必要)) という別のエラーが発生する可能性も非常に高くなります。次のようにしてすぐに修正できます。

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0
ln -sf universal-darwin20 universal-darwin19

この回避策を使用した後、ポッドのインストール時に次のようなクラッシュが発生した場合:

この解決策に従ってください