view CbC/GCC/GCC9onMac.md @ 99:a6e501ada7c1

backup 2022-04-06
author autobackup
date Wed, 06 Apr 2022 00:10:04 +0900
parents e12992dca4a0
children
line wrap: on
line source

# macOSでのビルド

- [このサイト](https://solarianprogrammer.com/2019/10/12/compiling-gcc-macos/)の通りにやればだいたいできる
- catalina(high sierraくらい?)からgmpなどのライブラリを個別でビルドしなければGCCのビルドができなかった
    - gcc9からGCCのリポジトリに自動でこのあたりのライブラリをインストールする`contrib/download_prerequisites`が追加されていて便利になっていた

```sh
$contrib/download_prerequisites 
(GCCのトップディレクトリで行わないといけない)
```

- `/usr/include/`が抜けた問題があるので、`sys_root`を自前で用意する必要がある
    - 一部のincludeファイルにmacOSのパッチを与える必要があるらしい(必要ないかも)

```sh
$cd sys_root
$ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Library .
$ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System .
$mkdir usr && cd usr
$ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/bin .
$ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib .
$ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/libexec .
$ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/share .
$cp -r /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include include
$vim include/Availability.h
```

- あとはConfigureを実行する
    - `--with-sysroot`を指定しておかないと、`/usr/include`が無いエラーが発生する
    - `--with-sysroot`は絶対パスで与えないといけない

```sh
../CbC_gcc/configure --prefix=$PWD --disable-nls --disable-bootstrap --enable-checking=tree,rtl,assert,types CFLAGS="-g3 -O0" --enable-languages=c,lto --no-create --no-recursion  --disable-multilib --with-sysroot=/Users/anatofuz/workspace/cr/CbC/latest_gcc/sys_root
```

- ここで何故かMafikefileでなく`config.status`なシェルスクリプトが生成される
    - このシェルスクリプトを実行するとMakefileが生成される
    - あとは `make -j`すれば良い(`-j`だと一部がうまく動かないので、`make`の方が良いかもしれない)