Lionより新しいOSを使用しているMacでは、llvmを使わないgccがないらしく,例えばクロスコンパイル用のgccをビルドするためには、 非llvm-gcc が必要とのことなので、非llvm-gcc をビルドするまでの手順を書いておこうと思います。
記事の内容
非llvmのgccのビルド手順
追加でシンボリックリンクを変更する手順
バージョンですが、今回ビルドするgccでクロスコンパイル用gccをビルドする前提なのであれば、非llvmのgcc >= クロスコンパイル用gccとなるようにバージョンを確認。今回は7.2.0で行いました。
必要なソースコードをダウンロードして展開する
・新しくホルダーを作成し、移動
$ cd $ mkdir N-gcc-7.2.0 $ cd N-gcc-7.2.0
・必要なソースコードのダウンロード
※各バージョンを見るなら→→→ GCC GMP MPFR MPC libiconv
$ curl -O https://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.gz $ curl -O https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2 $ curl -O https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.6.tar.gz $ curl -O https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz $ curl -O https://ftp.gnu.org/gnu/libiconv/libiconv-1.15.tar.gz
・それぞれ展開します
$ tar zxvf gcc-7.2.0.tar.gz $ tar jxvf gmp-6.1.2.tar.bz2 $ tar zxvf mpfr-3.1.6.tar.gz $ tar zxvf mpc-1.0.3.tar.gz $ tar zxvf libiconv-1.15.tar.gz
↓ こんな感じになってます。
それぞれビルドしてインストールする
GMP ※marsskyの部分は自分のユーザー名、以下同
$ mkdir gmp-build $ cd gmp-build $ ../gmp-6.1.2/configure --prefix=/Users/marssky/N-gcc-7.2.0 $ make -j4 $ make install $ cd ..
MPFR
$ mkdir mpfr-build $ cd mpfr-build $ ../mpfr-3.1.6/configure --prefix=/Users/marssky/N-gcc-7.2.0 --with-gmp=/Users/marssky/N-gcc-7.2.0 $ make -j4 $ make install $ cd ..
MPC
$ mkdir mpc-build $ cd mpc-build $ ../mpc-1.0.3/configure --prefix=/Users/marssky/N-gcc-7.2.0 --with-gmp=/Users/marssky/N-gcc-7.2.0 --with-mpfr=/Users/marssky/N-gcc-7.2.0 $ make -j4 $ make install $ cd ..
libiconv
$ mkdir libiconv-build $ cd libiconv-build $ ../libiconv-1.15/configure --prefix=/usr/local $ make -j4 $ make install $ cd ..
GCC
$ mkdir gcc-build $ cd gcc-build $ ../gcc-7.2.0/configure\ --prefix=/Users/marssky/N-gcc-7.2.0 \ --with-gmp=/Users/marssky/N-gcc-7.2.0 \ --with-mpfr=/Users/marssky/N-gcc-7.2.0 \ --with-mpc=/Users/marssky/N-gcc-7.2.0 \ --program-suffix=7.2.0 \ --enable-languages=c,c++ \ --with-system-zlib \ --enable-stage1-checking \ --enable-plugin \ --enable-lto \ --disable-multilib \ --with-libiconv-prefix=/usr/local $ sudo make bootstrap $ sudo make install
以上で、非llvmのgccのビルドが終了しました。
ビルドしたGCCのパスを通しておきます。
$ export PATH=/Users/marssky/N-gcc-7.2.0/bin:$PATH
【シンボリックリンクを変更する場合の作業】
今あるgccの名前を変える
$ sudo mv /usr/bin/gcc /usr/bin/gcc_bak20170918
↓
Operation not permittedが出る場合は、リカバリーモードで起動しSIPを切る。
$ csrutil disable
↓
今あるgccの名前を変える(再度挑戦)
$ sudo mv /usr/bin/gcc /usr/bin/gcc_bak20170918
↓
新しいgccのリンクを作成する
$ sudo ln -s /Users/marssky/N-gcc-7.2.0/bin/gcc7.2.0 /usr/bin/gcc
↓
変わったか確認
$ gcc -v