LoginSignup
4
2

More than 1 year has passed since last update.

Mac OSでC++コンパイラをClangからGCCに切り替える際に,シンボリックリンクの設定がうまくいかなかった.

Posted at

この記事の想定読者

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++-11gcc-11はそれぞれg++-9gcc-9と書かれていたが,(特に何も工夫しなければ)現在はver. 11を使うことになるので書き換えた.

これでシンボリックリンクの設定は完了した.最後に,which g++でClangからGCCに切り替わっているかチェックする.

$ which g++
/usr/local/bin/g++

期待通りの出力が得られたので無事切り替わっていることが分かる.めでたし,めでたし.

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2