UnixコマンドラインツールをApple Silicon向けにビルドする
主題
Unixコマンドラインツールを、Intel-based Macで、Apple Silicon向けにクロスコンパイルする方法について述べる。
背景
既に知られている通り、Appleは、Apple Siliconと呼ばれるチップを搭載したMacを発表した。開発者は、これに対応する必要に迫られている。筆者も、Unixコマンドラインツールを使ったアプリを作っているため、対応が必要だった。
本稿では、クロスコンパイルを知らなかった筆者が、Apple Silicon搭載Mac用のUnixコマンドラインツールを、Intel-based Macでコンパイルするまでを述べる。
手順
-
失敗例
こちらの記事に、iPhone向けのクロスコンパイル手順が紹介されている。それによると、iPhoneの各機種(CPU)向けの実行ファイル(バイナリ)をまとめたものが作れるとあった。
応用すれば、Apple Silicon用とIntel用の合体バイナリができると考えたが、やり方がまずかったのか、できなかった。 -
単純化
件の記事の手順を参考にトライ&エラーした。最も単純なケース(Apple Silicon)のみをCFLAGS
に与えたら、configureに怒られた。が、これは嬉しい怒られ方で、半分以上成功していた。クロスコンパイルをするなら、host名を指定しろと言われたからである。./configure CFLAGS="-arch arm64"
-
成功
host名を指定すると、クロスコンパイルであることを示す出力が得られた。./configure CFLAGS="-arch arm64" --host=i386-apple-darwin20.1.0 make
-
合体
通常通りコンパイルしたIntel向けバイナリとの合体は、lipo
コマンドを用いる。(以下はcdparanoiaの例)cd universal2/ lipo -create ../arm64/cdparanoia \ ../x86_64/cdparanoia \ -output cdparanoia
参考サイト
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント