備忘録@180416

Macmini (mid2011)にHigh Sierra (10.13.4)インストール後、gccやgfortranでコンパイルするとエラーが発生するようになった。これに対して行った対処。


(1) High Serriaインスト後は、brew info gcc としてもインストールされていないと表示される。Terminalで gcc とタイプすると起動したかのようにみえるが、エラー停止する。
 そこで、/usr/local/bin にあったOS更新前にインストールした古い gortran, gcc などを sudo rm -rf で強制削除し、gcc とタイプしても起動しない状態とした。

(2) gcc をインストール。gfortrangcc に含まれる。この操作は簡単。
 brew install gcc

(3) Fortran programをコンパイルするとまだエラーが発生する。

 $gfortran ./xxx.f -o xxx
  dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.19.dylib
    Referenced from: /usr/local/Cellar/gcc/7.3.0_1/libexec/gcc/x86_64-apple-darwin17.3.0/7.3.0/f951
    Reason: image not found
  gfortran: internal compiler error: Abort trap: 6 (program f951)
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <https://github.com/Homebrew/homebrew-core/issues> for instructions.
 赤字のところをみると、Libraryが見つからないというエラーのよう。

 ところが、/usr/local/Cellar/ の下にはこのLibが存在しているので、コンパイラがLibの場所を間違って /usr/local/opt/ を探していると思われた。
 そこで、コンパイラが探している場所にLibのシンボリックリンクを置いた。ここでは以下のように4つのLibをリンクすることでエラーは解決した。

(4) あらかじめディレクトリーを作り、そこにリンクをおいた。

  mkdir /usr/local/opt/isl
  mkdir /usr/local/opt/isl/lib
  ln -s /usr/local/Cellar/isl/0.19/lib/libisl.19.dylib    /usr/local/opt/isl/lib/libisl.19.dylib
  mkdir /usr/local/opt/libmpc
  mkdir /usr/local/opt/libmpc/lib
  ln -s /usr/local/Cellar/libmpc/1.1.0/lib/libmpc.3.dylib /usr/local/opt/libmpc/lib/libmpc.3.dylib
  mkdir /usr/local/opt/mpfr
  mkdir /usr/local/opt/mpfr/lib
  ln -s /usr/local/Cellar/mpfr/4.0.1/lib/libmpfr.6.dylib  /usr/local/opt/mpfr/lib/libmpfr.6.dylib
  mkdir  /usr/local/opt/gmp
  mkdir  /usr/local/opt/gmp/lib
  ln -s /usr/local/Cellar/gmp/6.1.2_2/lib/libgmp.10.dylib /usr/local/opt/gmp/lib/libgmp.10.dylib
□ □ □