#この記事の想定読者
MacOSの利用者で,C++のClangからGCCへの切り替えをしたいがシンボリックリンクの設定が上手くいかない人.
#実行環境
機種 : MacBook Pro 2017
OS : Mac OS Monterey ver. 12.2.1
プロセッサ : 2.3 GHz デュアルコア Intel Core i5
メモリ : 16GB 2133 MHz LPDDR3
グラフィックス : Intel Iris Plus Graphics 640 1536 MB
#背景
Visual studio codeで競プロ環境構築[mac OS]に沿って,ClangからGCCへの切り替えをしていたがうまくいかなかった.
具体的には,
$ which g++
/usr/bin/g++
が
$ which g++
/usr/local/bin/g++
に変化するはずだが,変化しなかった.そのためClangからGCCへの切り替えができず.
#解決方法
全ての場合に当てはまるか分からないが,自分の場合は以下のようにして解決した.
まず,
$ brew doctor
と入力すると,
Warning: Broken symlinks were found. Remove them with `brew cleanup`:
/usr/local/bin/g++
/usr/local/bin/gcc
と出力される.つまり,シンボリックリンクが壊れているから
$ brew cleanup
と入力しなさい,という警告メッセージが出てきた.そのためbrew cleanup
を入力すると,
Pruned 2 symbolic links from /usr/local
となり,壊れているシンボリックリンク2つを取り除いたよ,と出力される.
そこで,以下のコードを打って改めてシンボリックリンクを設定する.
$ ln -s /usr/local/bin/g++-11 /usr/local/bin/g++
$ ln -s /usr/local/bin/gcc-11 /usr/local/bin/gcc
元々の記事では,上記のコードのg++-11
やgcc-11
はそれぞれg++-9
やgcc-9
と書かれていたが,(特に何も工夫しなければ)現在はver. 11を使うことになるので書き換えた.
これでシンボリックリンクの設定は完了した.最後に,which g++
でClangからGCCに切り替わっているかチェックする.
$ which g++
/usr/local/bin/g++
期待通りの出力が得られたので無事切り替わっていることが分かる.めでたし,めでたし.