lameをApple Silicon向けにビルドする

主題
lameを、Intel-based Macで、Apple Silicon向けにクロスコンパイルする方法について述べる。

背景
この記事で説明しているが、筆者は、Unixコマンドラインツールを、クロスコンパイルする必要があった。そして、lameもその一つだった。が、イソイソとコンフィギュアを実行し、makeするとエラーが出た。
本稿では、lameで発生したビルドエラーを、対策する方法を述べる。

手順(経過)

  1. エラー
    コンフィギュアは通ったのだが、makeすると、次のエラーが出た。

                    clang: error: the clang compiler does not support '-march=native'
                
  2. メーリングリスト

    想像
    エラーの原因はmakeファイルのCFLAGSに書かれた、2つのコンパイラフラグだった。サポートされないなら、いらないだろうと考えて、lameメーリングリストに投げたら、どちらのフラグも、クロスコンパイルでは意味がないと、お墨付きをもらえた。

    数が多い
    makeファイルが原因な事は分かったが、対象となるmakeファイルが20点以上ある。どうすれば良いか、メーリングリストに投げた結果、configure.inを変更し、コンフィギュアスクリプトを再生成する方法を紹介された。

  3. 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
    
    
                
  4. コンフィギュアスクリプトの再生成準備
    コンフィギュアスクリプトを再生成するには、以下の準備がいる。

    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
                
  5. コンフィギュアスクリプトの再生成

                    autoreconf -fiv
                
  6. lameのクロスコンパイル
    再生成されたコンフィギュアスクリプトを、クロスコンパイルの設定で実行し、makeする。

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL