M4チップを搭載した Apple Silicon Mac mini上で、OpenBoardView を無事ビルドし、起動できたことをご報告いたします。この成功には、build.sh
スクリプトへの小さな修正と、macOSのコード署名への対応が必要でした。同様の環境でOpenBoardViewの利用を検討されている方々、または今後のビルドプロセス改善の一助となれば幸いです。
私のシステム環境:
- モデル名: Mac mini
- モデル識別子: Mac16,10
- モデル番号: MU9D3J/A
- チップ: Apple M4
- メモリ: 16 GB
- システムバージョン: macOS 15.5 (24F74)
遭遇した問題(初回ビルド失敗時):
READMEに従ってリポジトリをクローンし、./build.sh
を実行したところ、ビルドプロセスはリンク段階でUndefined symbols for architecture x86_64
エラーにより失敗しました。これは、私のシステムがarm64
であるにもかかわらず、ビルドプロセスがx86_64
(またはUniversal 2)バイナリの作成を試み、Homebrew経由でインストールされたarm64
ライブラリ(例: libSDL2.dylib
)との不一致が生じたことを示していました。
最初のbuild.sh
の出力に関連する、ターゲットアーキテクチャを示す行は以下の通りでした:
Extra flags passed to CMake: -DCMAKE_INSTALL_PREFIX= -DCMAKE_OSX_ARCHITECTURES=arm64;x86_64
解決策(build.sh
の修正とコード署名):
この問題を解決するため、build.sh
スクリプトに重要ながらも小さな変更を加えました:
-
build.sh
の修正:
build.sh
を開き、CMAKE_OSX_ARCHITECTURES
を設定している行を変更しました。元の行:
if [[ "$(uname -a)" == *"arm64"* ]]; then COMPILEFLAGS="$COMPILEFLAGS -DCMAKE_OSX_ARCHITECTURES=arm64;x86_64" fi
修正後の行(
arm64
のみをターゲットとするため):if [[ "$(uname -a)" == *"arm64"* ]]; then COMPILEFLAGS="$COMPILEFLAGS -DCMAKE_OSX_ARCHITECTURES=arm64" fi
これにより、Apple Silicon Macでは
arm64
アーキテクチャのみがターゲットとなり、x86_64
依存関係との競合を防ぎます。 -
build.sh
の再実行:
この修正後、./build.sh
はコンパイルおよびリンクに関して問題なく完了しました。出力はExtra flags passed to CMake: -DCMAKE_INSTALL_PREFIX= -DCMAKE_OSX_ARCHITECTURES=arm64
であることを確認できました。 -
コード署名の無効性への対応:
新しくビルドされたopenboardview.app
を実行しようとしたところ、SIGKILL (Code Signature Invalid)
エラーによりすぐにクラッシュしました。これはクラッシュレポートに示されている通りです。Exception Type: EXC_BAD_ACCESS (SIGKILL (Code Signature Invalid)) Termination Reason: Namespace CODESIGNING, Code 2 Invalid Page
これは、最近のmacOSバージョンにおけるSystem Integrity Protection (SIP) およびGatekeeperにより、自己ビルドされたアプリケーションでよく見られる問題です。
これを修正するため、アプリケーションにアドホックコード署名を適用しました:
codesign --force --deep --sign - ./openboardview.app
出力に
replacing existing signature
と表示され、成功を示しました。
結果:
これらの手順を実行した後、openboardview.app
はM4 Mac mini上で無事に起動し、完全に機能しているようです。
素晴らしいオープンソースツールの提供に感謝。この報告が、Apple Siliconデバイス、特にM4のような新しいチップ向けのビルドプロセスの改善に役立つことを願っています。