lameをApple Silicon向けにビルドする
主題
lameを、Intel-based Macで、Apple Silicon向けにクロスコンパイルする方法について述べる。
背景
この記事で説明しているが、筆者は、Unixコマンドラインツールを、クロスコンパイルする必要があった。そして、lame
もその一つだった。が、イソイソとコンフィギュアを実行し、makeするとエラーが出た。
本稿では、lameで発生したビルドエラーを、対策する方法を述べる。
手順(経過)
-
エラー
コンフィギュアは通ったのだが、makeすると、次のエラーが出た。clang: error: the clang compiler does not support '-march=native'
-
メーリングリスト
想像
エラーの原因はmakeファイルのCFLAGSに書かれた、2つのコンパイラフラグだった。サポートされないなら、いらないだろうと考えて、lameメーリングリストに投げたら、どちらのフラグも、クロスコンパイルでは意味がないと、お墨付きをもらえた。数が多い
makeファイルが原因な事は分かったが、対象となるmakeファイルが20点以上ある。どうすれば良いか、メーリングリストに投げた結果、configure.inを変更し、コンフィギュアスクリプトを再生成する方法を紹介された。 -
configure.in変更内容
configure.inを以下に示すように変更する。diffファイルはこちらからダウンロードすることもできる。--- a/configure.in 2017-08-16 00:16:31.000000000 +0900 +++ b/configure.in 2020-12-08 19:41:52.000000000 +0900 @@ -935,8 +935,7 @@ -mtune=native" ;; *86) - OPTIMIZATION="${OPTIMIZATION} -march=native \ - -mtune=native" + OPTIMIZATION="${OPTIMIZATION}" ;; arm*-gnueabi) if [ -z "$(echo ${GCC_version} | awk '/4\.0/')" ]; then @@ -986,8 +985,7 @@ -mtune=native" ;; *86) - OPTIMIZATION="${OPTIMIZATION} -march=native \ - -mtune=native" + OPTIMIZATION="${OPTIMIZATION}" ;; esac
-
コンフィギュアスクリプトの再生成準備
コンフィギュアスクリプトを再生成するには、以下の準備がいる。autoconfのインストール
curl -LO https://ftp.gnu.org/gnu/autoconf/autoconf-2.70.tar.xz tar xf autoconf-2.70.tar.xz cd autoconf-2.70 ./configure make && sudo make install
automakeのインストール
curl -LO https://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.xz tar xf automake-1.16.3.tar.xz cd automake-1.16.3 curl -OJL "https://drive.google.com/uc?export=download&id=1JDdwBe7SBtv4XylX0CTn-Jw4KUd58c3o" patch -p1 < automake_1163_configure.patch ./configure make && sudo make install
libtoolのインストール
curl -LO http://ftp.jaist.ac.jp/pub/GNU/libtool/libtool-2.4.6.tar.xz tar xf libtool-2.4.6.tar.xz cd libtool-2.4.6 ./configure --program-prefix=g make && sudo make install export LIBTOOL=`which glibtool` export LIBTOOLIZE=`which glibtoolize`
gettextのインストール
curl -LO https://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.tar.gz tar xf gettext-0.21.tar.gz cd gettext-0.21 ./configure make && sudo make install
-
コンフィギュアスクリプトの再生成
autoreconf -fiv
-
lameのクロスコンパイル
再生成されたコンフィギュアスクリプトを、クロスコンパイルの設定で実行し、makeする。
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント