Macでgcc, g++をインストールした話(自分用のメモ)
環境
gcc, g++をインストールする
まず、Homebrewを利用してgcc, g++をインストールした。yna87.hatenablog.com
$ brew search gcc
==> Formulae
gcc gcc@5 gcc@7 x86_64-elf-gcc
gcc@4.9 gcc@6 gcc@8
==> Casks
homebrew/cask/gcc-arm-embedded
$ brew install gcc
これでgcc, g++のインストールが完了。しかし、今の状態ではgcc, g++コマンドを使用してもインストールしたgcc, g++が呼び出されないので、次のステップが必要。
$ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin19.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
インストールしたgcc, g++が呼び出されるようにする
インストールしたパッケージは/usr/local/Celler/に保存され、/usr/local/bin/にコマンドのエイリアスが貼られる。まず、エイリアスを探す。
$ ls /usr/local/bin | grep gcc
gcc-9
gcc-ar-9
gcc-nm-9
gcc-ranlib-9
x86_64-apple-darwin19-gcc-9
x86_64-apple-darwin19-gcc-9.2.0
x86_64-apple-darwin19-gcc-ar-9
x86_64-apple-darwin19-gcc-nm-9
x86_64-apple-darwin19-gcc-ranlib-9
$ ls /usr/local/bin | grep g++
g++-9
x86_64-apple-darwin19-g++-9
/usr/local/bin/gcc, /usr/local/bin/g++に対してシンボリックリンクを作成した。
$ ln -s /usr/local/bin/gcc-9 /usr/local/bin/gcc
$ ln -s /usr/local/bin/g++-9 /usr/local/bin/g++
最後に、~/.zshenvに以下の記述を。
export PATH="/usr/local/bin:$PATH"
.zshenvの内容を再読み込みすると、インストールしたgcc, g++がzshで使えるようになりました。
$ source ~/.zshenv
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/9.2.0_3/libexec/gcc/x86_64-apple-darwin19/9.2.0/lto-wrapper
Target: x86_64-apple-darwin19
Configured with: ../configure --build=x86_64-apple-darwin19 --prefix=/usr/local/Cellar/gcc/9.2.0_3 --libdir=/usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-9 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 9.2.0_3' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk
Thread model: posix
gcc version 9.2.0 (Homebrew GCC 9.2.0_3)
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/9.2.0_3/libexec/gcc/x86_64-apple-darwin19/9.2.0/lto-wrapper
Target: x86_64-apple-darwin19
Configured with: ../configure --build=x86_64-apple-darwin19 --prefix=/usr/local/Cellar/gcc/9.2.0_3 --libdir=/usr/local/Cellar/gcc/9.2.0_3/lib/gcc/9 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-9 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 9.2.0_3' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk
Thread model: posix
gcc version 9.2.0 (Homebrew GCC 9.2.0_3)
macOS CatalinaとUbuntuのデュアルブートにした話
今回は、Mac Book AirでSSDのパーティションを分割してmacOS CatalinaとUbuntu18.04.2 LTSのデュアルブートにした手順をまとめます。
(あくまで自分が行った手順の記述であって、解説ではないので参考程度に。)
Ubuntuは18.04.2 LTSより新しい18.04.4 LTSや19.10も出ていますが、使いたいソフトウェアのサポート外であったため、古いバージョンの18.04.2 LTSにしました。
(ちなみにUbuntuのバージョンはリリースされた年月を表しています。18.04は2018年4月リリースです。また、LTSはlong-term supportの略でサポート期間が5年あるそうです。)
環境
・Mac Book Air (13-inch, Early 2015)
・MacOS Catalina version10.15.3
必要なもの
・USBメモリ or CD-ROM (おそらく4GBあれば十分)
手順
目次
- バックアップを取る
- ブータブルUSBを作る
- ストレージのパーティションを分割する
- Ubuntuをインストールする
- rEFindのインストール(2021.04.25 少し追記しました)
- ブータブルUSBを元の状態に戻す
1. バックアップを取る
この後行うパーティションの分割などでデータが破損する可能性があるので、Time MachineやiCloud Drive等を利用してバックアップを取りましょう。
(実際に私はmacOSが起動出来なくなって、クリーンインストールからやり直したことがあります。)
2. ブータブルUSBを作る
http://old-releases.ubuntu.com/releases/からubuntu-18.04.2-desktop-amd64.isoをダウンロードしました。最新版のUbuntu (現時点では18.04.4 LTS or 19.10) をインストールする場合はhttps://jp.ubuntu.com/downloadからDesktop版をダウンロードすれば良いでしょう。
Etcherを使ってこのデータをUSBメモリに書き込みます。USBメモリの中身は消えてしまうので他の場所に移しておきましょう。まず、Etherをこちらのページからダウンロードします。
USBメモリを挿した状態でEtcherを開くと下のような画面が出ます。Select imageから先ほどダウンロードしたisoファイルを選択します。中央に使用するUSBメモリが選択されていることを確認してFlash!を押します。5分ほど待てばブータブルUSBが完成します。
3. ストレージのパーティションを分割する
Mac標準のアプリケーションであるディスクユーティリティを開き、ストレージのパーティションを分割してUbuntu用の領域を作成します。macOS Catalinaの場合は、左にhogeとhoge - Dataの2つの領域があると思います。 - Data付きの方を選択し (実際にはどちらを選択しても良いような気がします) 、画面上の 'パーティション' から下図の 'パーティション' を選択します。
次に、下のような画面が出ます。左下の '+' を押し、Ubuntu用に割り当てるストレージの大きさを決めましょう。フォーマットはMS-DOS (FAT) を選択し、 '適用' を押します。ここで、リカバリーモードでやった方が良いよというような警告が出ましたが無視しました。
数分待てば (1時間ほどかかる場合もあります) パーティションの分割が完了します。
4. Ubuntuをインストールする
一旦PCをシャットダウンします。ブータブルUSBを挿した状態で、optionキーを押しながらMacを起動すると選択画面が出ます。そこでEFI Bootを選び、Install Ubuntuを選択します。
キーボードは日本で買ったMacの場合、 '日本語' → '日本語' を選択します。次の画面下の、 'サードパーティ製のソフトウェアをインストールする' にチェックします。上の選択肢はお好みで。 (私はMinimal Installationにしました。)
インストールの種類は 'それ以外 (Somehting else)' を選択します。
次にUbuntuをインストールするパーティションを選択します。手順3でUbuntu用に割り当てた領域の欄をダブルクリックし、サイズは変更せず以下のように設定します。インストールするデバイスも同じ領域を選択し、次に進むとUbuntuがインストールされます。
5. rEFindのインストール
2021.04.25 追記
自分ではあまり調べていませんが、PCによっては(2018年以降の製品?)rEFindをインストールするためにセキュリティレベルを下げる必要がある、らしいです。参考になりそうなリンク貼っておきます。(外部リンク)
https://sy-base.com/myrobotics/mac/mac_refind/
(追記ここまで)
今の状態ではデフォルトのOSがUbuntuになっており、optionキーを押しながら起動しなければmacOSを選べません。それでは不便なので無料のブートマネージャー rEFind をインストールしました。rEFindをインストールすると起動した際にOSの選択画面が表示されるようになります。こちらのページから Getting rEFind → A binary zip file を選択してダウンロードします。
rEFindをインストールするためにはSIP (System Integrity Protection)を一旦無効にする必要があります。command + Rを押しながらMacを起動するとリカバリーモードで起動されます。画面上からユーティリティ→ターミナルを選択し下記のコマンドを入力します。
$ csrutil disable
これでSIPが無効になりました。
optionキーを押しながらMacを起動してmacOSを選択します。SIPが無効になっていることが確認できます。
$ csrutil status
System Integrity Protection status: disabled.
上でダウンロードしたディレクトリに移動し、
$ ./refind-install
を実行してrEFindをインストールします。そして、もう一度リカバリーモードでMacを起動し以下のコマンドでSIPを有効にしておきます。
$ csrutil enable
6. ブータブルUSBを元の状態に戻す
次にブータブルUSBを元のUSBの状態に戻します。USBを挿していない状態で以下のコマンドを実行します。
$ diskutil list
私の環境では下のように出力されました。
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *251.0 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 127.6 GB disk0s2
3: Microsoft Basic Data 123.2 GB disk0s3
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +127.6 GB disk1
Physical Store disk0s2
1: APFS Volume macOS - Data 26.5 GB disk1s1
2: APFS Volume Preboot 81.5 MB disk1s2
3: APFS Volume Recovery 526.6 MB disk1s3
4: APFS Volume VM 1.1 GB disk1s4
5: APFS Volume macOS 10.8 GB disk1s5
ブータブルUSBを挿して同じコマンドを実行します。
diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *251.0 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 127.6 GB disk0s2
3: Microsoft Basic Data 123.2 GB disk0s3
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +127.6 GB disk1
Physical Store disk0s2
1: APFS Volume macOS - Data 26.5 GB disk1s1
2: APFS Volume Preboot 81.5 MB disk1s2
3: APFS Volume Recovery 526.6 MB disk1s3
4: APFS Volume VM 1.1 GB disk1s4
5: APFS Volume macOS 10.8 GB disk1s5
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: Apple_partition_scheme *16.0 GB disk2
1: Apple_partition_map 4.1 KB disk2s1
2: Apple_HFS 2.4 MB disk2s2
これで増えている部分 (上の例では/dev/disk2) がUSBメモリの領域を表しています。それに対して以下のコマンドを実行します。"UNTITLED"の部分はUSBに付けたい名前にして下さい。
$ diskutil unMountDisk /dev/disk2
$ diskutil eraseDisk FAT32 UNTITLED /dev/disk2
これでUSBメモリが元の状態に戻ります。