Techioz Blog

macOS 用 Ruby gem ユニバーサル コンパイル

概要

C で書かれた Ruby gem があり、これは次のように簡単にコンパイルされます。

ruby ./extconf.rb
make

Windows と Linux では、これにより .so ファイルが作成され、これを Ruby スクリプトにロードできます。

macOS では、これにより .bundle ファイルが作成されます。これで、lipo -archs xxx.bundle は、バンドルが x86_64 専用であることを示しました。バンドルを Intel ベースと Arm ベースの macOS の両方に共通にするには、何を変更する必要がありますか?

解決策

試す

lipo -archs xxx.bundle

lipo -archs は、利用可能なアーキテクチャを表示します。

Lipo が単一のアーキテクチャを表示する場合は、

export CFLAGS="-arch x86_64 -arch arm64"
export CXXFLAGS="-arch x86_64 -arch arm64"
export LDFLAGS="-arch x86_64 -arch arm64"

.bundle をビルドすると、ユニバーサル バイナリ コンパイラ フラグが設定される場合があります