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