14 おや? M1で動く gcc-devel @11-20210418 がいつの間にかインストールされていた, gcc11 到着

M1 Mac で MacPorts のアップデートをしていたら、
--->  Attempting to fetch libgcc-devel-11-20210418_0.darwin_20.arm64.tbz2 from https://packages.macports.org/libgcc-devel
とか
--->  Attempting to fetch gcc-devel-11-20210418_0.darwin_20.arm64.tbz2 from https://packages.macports.org/gcc-devel
とか。arm64?

/opt/local/bin/gcc-mp-devel, /opt/local/bin/gfortran-mp-devel という、 4/21 22:31 という日付の実行形式がある!

“The GNU compiler collection, prerelease BETA snapshot.” とのことだ。

% gcc-mp-devel nantoka.c
% file a.out
a.out: Mach-O 64-bit executable arm64

おー、ついに。RELEASE ではないけれど。

自分でインストールした覚えはないので、 何かの依存関係でインストールされたのかな。

GCC, the GNU Compiler Collection によると、GCC 11.1 が 2021-04-20 に frozen とある。


何かコンパイルしてみよう。 [*] でやったようにして GLSC をコンパイルしてみる。

rm -rf sagyou
mkdir sagyou
cd sagyou
curl -O  http://www602.math.ryukoku.ac.jp/~nakano/software/math/glsc-3.5.a.tar.Z
curl -O  http://nalab.mind.meiji.ac.jp/~mk/daishin/glsc-3.5+a.patch
curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/graphics/glsc-3.5+mk.patch20201229

tar xzf glsc-3.5.a.tar.Z
cd glsc-3.5.a
patch -p1 < ../glsc-3.5+a.patch
patch -p1 < ../glsc-3.5+mk.patch20201229
ここで Makefile を開いて、 CCgcc-mp-devel に、 FCgfortran-mp-devel に変える。
make>&make.log
sudo mkdir -p /usr/local/bin /usr/local/include /usr/local/lib
sudo make install

GLSC についているテスト・プログラムのうち、 ctests, ctestd は動く。しかし ftests, ftestd は動かない (Segmentation fault とかおこる)。

Fortran で問題が起こるのは困るね (まあ、今はそれ使っている人いないけど)。 GLSC についてはしばらく様子見だ。

とりあえず gcc と打ったら、この gcc が動くように設定する。
% port select --list gcc
Available versions for gcc:
	mp-gcc-devel
	none (active)
% sudo port select --set gcc mp-gcc-devel

常微分方程式を解くプログラムを1ダースくらい一気に make して、 動作チェックしたところ、問題なく動いた。

(2021/5/19) Intel Mac で MacPorts のアップデートをしたら、gcc11 が入って来た (なぜかは分からない)。 M1 Mac の方は入っていない。
% sudo port install gcc11
% port select --list gcc
Available versions for gcc:
	mp-gcc-devel (active)
	mp-gcc11
	none
% sudo port select --set gcc mp-gcc11
% gcc --version
gcc (MacPorts gcc11 11.1.0_2) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
では早速テスト
% gcc hello.c
ld: library not found for -lgcc_s.1.1
collect2: error: ld returned 1 exit status
%
あららら。WWW にも Twitter にも情報なし。 しばらく待とう。

(2021/5/22) 待っていても治らないし、同じ目に会っている人がネットで見当たらない。 自分で何とかすべきものらしい。
port installed |grep gcc
として何がインストールされているか調べる。
sudo port uninstall gcc-devel
sudo port uninstall libgcc-devel
2つ目を実行すると
Note: It is not recommended to uninstall/deactivate a port that has dependents as it breaks the dependents.
The following ports will break:
 fftw-3 @3.3.9_1
 gcc11 @11.1.0_2
Continue? [y/N]:
と警告が出た。ふむふむ。とりあえず実行してから
sudo port install gcc11
sudo port install fftw-3
としてインストールし直し。 こうしてから gcc したら無事コンパイルに成功した。



桂田 祐史