質問するログイン新規登録
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3858閲覧

MacでのC++の環境構築でg++を使えるようになりたいです

tamedy

総合スコア22

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/10/20 05:51

編集2021/10/20 06:46

0

0

当方マックユーザーです。
C++の環境構築をしようと思い、

ターミナルで
brew install gcc
を実行し、
which g++
で確認したところ、
/usr/bin/g++
でした。
その後、
ln -s /usr/local/bin/g++-10 /usr/local/bin/g++
を実行したところ、
ln: /usr/local/bin/g++ : Permission denied
と表示されました。
調べたところ、スーパーユーザーになれば実行権限ができると知り、
sudo su -
でスーパーユーザーになり
ln -s /usr/local/bin/g++-10 /usr/local/bin/g++
を実行しました。
しかし、相変わらず
which g++
で確認しても
/usr/bin/g++
であり
ln -s /usr/local/bin/g++-10 /usr/local/bin/g++
を実行しても
ln: /usr/local/bin/g++: File exists
と表示されるだけです。

どうすればいいでしょうか?
どなたかご教示いただけると幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/10/20 06:03

ターミナルで 「echo $path」を実行した結果を教えてください
tamedy

2021/10/20 06:12

/opt/homebrew/opt/php@7.4/sbin /opt/homebrew/opt/php@7.4/bin /opt/homebrew/opt/php@7.4/sbin /opt/homebrew/opt/php@7.4/bin /opt/homebrew/opt/php@7.4/sbin /opt/homebrew/opt/php@7.4/bin /opt/homebrew/opt/php@7.4/sbin /opt/homebrew/opt/php@7.4/bin /Users/tamedenryou/opt/anaconda3/bin /Users/tamedenryou/opt/anaconda3/condabin /opt/homebrew/bin /opt/homebrew/sbin /Library/Frameworks/Python.framework/Versions/3.9/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/Apple/usr/bin です。
jbpb0

2021/10/20 07:16

ターミナルで、 brew doctor を実行してみてください そうしたら、おそらくディレクトリに書き込み権限が無い的なwarningが出てくると思います warningと一緒に、どうやったら直るのかも表示されるので、その通りに実行したら、一々sudo付けなくても大丈夫になります
guest

回答1

0

ベストアンサー

いま brew install gcc を実行すると、gcc 10 ではなく gcc 11 が入るはずです。

ということは、実行すべきは「ln -s /usr/local/bin/g++-10 /usr/local/bin/g++」ではなく「sudo ln -s -f /usr/local/bin/g++-11 /usr/local/bin/g++」でしょう。


追記:
HOMEBREW_PREFIX/opt/homebrew とのことですので、Homebrew関連で /usr/local というパスを参照している記事はすべて質問者さんにはあてはまりません。/usr/local/opt/homebrew に読み替える必要があります。

sudo rm /usr/local/bin/g++
ln -s -f /opt/homebrew/bin/g++-11 /opt/homebrew/bin/g++

の2つを実行することで目的の状態になると思われます。

投稿2021/10/20 06:17

編集2021/10/20 07:57
int32_t

総合スコア21933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamedy

2021/10/20 06:20

やってみましたが、 ln: /usr/local/bin/g++: File exists という結果でした。 他に手立てはありますでしょうか?
int32_t

2021/10/20 06:21

一度 /usr/local/bin/g++ を rm コマンドで消してから sudo ln を再実行してください。
tamedy

2021/10/20 06:31 編集

消そうとするとPermission deniedが出ます。sudo su - を使っても大丈夫でしょうか?
int32_t

2021/10/20 06:31

sudo rm /usr/local/bin/g++ でよいです。
tamedy

2021/10/20 06:40

消去できました!が、先程教えていただいたコードを打ち込み、 which g++ で確認したところ、 /usr/bin/g++ とのことでした。
int32_t

2021/10/20 06:42

ls -Fl /usr/local/bin/g++* の結果を教えてください。
tamedy

2021/10/20 06:44

lrwxr-xr-x 1 root wheel 21 10 20 15:38 /usr/local/bin/g++@ -> /usr/local/bin/g++-11 です。
int32_t

2021/10/20 06:47

では「brew install gcc」で既に失敗してます。 もう1回やってみて、エラーらしきものが出ていないか確認してください。
tamedy

2021/10/20 06:49

brew install gccを実行したところ、以下のようになりました。 Updating Homebrew... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/core). ==> Updated Formulae Updated 2 formulae. Warning: gcc 11.2.0 is already installed and up-to-date. To reinstall 11.2.0, run: brew reinstall gcc
int32_t

2021/10/20 07:04 編集

おかしいですねー。インストールしてあれば /usr/local/bin/g++-11 があるはずなんですが。 brew doctor の結果はどうなりますか。
tamedy

2021/10/20 07:09 編集

以下の通りです。 Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: A newer Command Line Tools release is available. Update them from Software Update in System Preferences or run: softwareupdate --all --install --force If that doesn't show you any updates, run: sudo rm -rf /Library/Developer/CommandLineTools sudo xcode-select --install Alternatively, manually download them from: https://developer.apple.com/download/all/. You should download the Command Line Tools for Xcode 13.0. Warning: "config" scripts exist outside your system or Homebrew directories. `./configure` scripts often look for *-config scripts to determine if software packages are installed, and which additional flags to use when compiling and linking. Having additional scripts in your path can confuse software installed via Homebrew if the config script overrides a system or Homebrew-provided script of the same name. We found the following "config" scripts: /Users/tamedenryou/opt/anaconda3/bin/icu-config /Users/tamedenryou/opt/anaconda3/bin/krb5-config /Users/tamedenryou/opt/anaconda3/bin/freetype-config /Users/tamedenryou/opt/anaconda3/bin/xslt-config /Users/tamedenryou/opt/anaconda3/bin/libpng16-config /Users/tamedenryou/opt/anaconda3/bin/libpng-config /Users/tamedenryou/opt/anaconda3/bin/xml2-config /Users/tamedenryou/opt/anaconda3/bin/python3-config /Users/tamedenryou/opt/anaconda3/bin/curl-config /Users/tamedenryou/opt/anaconda3/bin/ncursesw6-config /Users/tamedenryou/opt/anaconda3/bin/pcre-config /Users/tamedenryou/opt/anaconda3/bin/python3.8-config /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9-config /Library/Frameworks/Python.framework/Versions/3.9/bin/python3-config 長くて申し訳ありません。
int32_t

2021/10/20 07:17

とくに重大な問題はないように見えますね。 ダメもとで brew uninstall gcc してもう一回 brew install gcc すると何かエラーが出たり /usr/local/bin/g++-11 ができたりしませんかね。
tamedy

2021/10/20 07:29 編集

やってみましたが、which g++で相変わらず/usr/bin/g++です-_- エラーも出ませんでした。
int32_t

2021/10/20 07:37

あとやってみることは ・brew --config の HOMEBREW_PREFIX が /usr/local になっているかの確認 ・ディスク上で g++-11 というファイルがどこにあるか Spotlight や find で探してみる ぐらいですかね。
tamedy

2021/10/20 07:48 編集

brew --configを試したところ、HOMEBREW_PREFIXが/opt/homebrewでした。
tamedy

2021/10/20 07:48

あとfinderでg++という名前のファイルを探しましたが、ありませんでした。。。
int32_t

2021/10/20 07:50

> HOMEBREW_PREFIXが/opt/homebrewでした。 えええー。なんでその設定を変えたことを黙っているんですか。 ls -Fl /opt/homebrew/bin/g++-11 で g++-11が存在していることを確認していただけますか?
tamedy

2021/10/20 07:55

プログラミング初心者なものですみません>_< lrwxr-xr-x 1 tamedenryou admin 31 10 20 16:27 /opt/homebrew/bin/g++-11@ -> ../Cellar/gcc/11.2.0/bin/g++-11 と出てきました。
int32_t

2021/10/20 07:58

了解です。回答に追記しました。
tamedy

2021/10/20 08:03

which g++で /opt/homebrew/bin/g++ で大丈夫でしょうか? 2時間近く付き合っていただき誠にありがとうございました! homebrewというものがどういうものなのかわかっておらず、そのために手間を煩わせてしまったようでしたら、本当に申し訳ありません。
int32_t

2021/10/20 08:05

> で大丈夫でしょうか? 大丈夫です!
tamedy

2021/10/20 08:14

わかりました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問