MacPorts でコンパイラ(gcc)を切り替える方法

OSXmac portsを入れると,システムには

  • /usr/bin/gcc
  • /opt/local/bin/gcc-mp-4.9
  • /opt/local/bin/gcc-mp-4.8

のような感じで,複数のgccが共存する状態になります.ややこしいですね.

ここで port コマンドの select オプションを使うと,デフォルトのgccを切り替えることができます.

port select の使い方

まず,利用可能なバージョンの一覧を調べます.

$ port select --list gcc
Available versions for gcc:
	mp-gcc48 (active)
 	mp-gcc49 
	none 

ためしに gcc に"-v"オプションを付けて,gccのバージョンを確認してみます

$ gcc -v
  (省略)
gcc version 4.8.2 (MacPorts gcc48 4.8.2_2) 

たしかに 4.8.2です

$ which gcc
$ readlink `which gcc`

とすると判るように, /opt/local/bin/gcc というシンボリックリンクがあって,それが/opt/local/bin/gcc-mp-4.8を指しています.


mp-gcc49 に切り替えるには次のコマンドを実行します

$ sudo port select --set gcc mp-gcc49

port select は,debianubuntualternativeと同じ機能で,アプリケーションのバイナリや設定ファイルへのリンクを全部まとめて一度に更新してくれます. gcc の場合は/opt/local/bin/gccだけでなく g++ や gcj 等のコンパイラ関係のリンクを一度にまとめて更新するようになっています.

port selectが内部で使っている定義ファイルは /opt/local/etc/select にあります.このディレクトリを見ると clangやpythonも port select に対応しているようです.