昔はちゃんと動いたc++のコードが,OSをmojaveにしたら動かなくなった.
$ g++ -o a.out hello.cpp
出てきたエラー
In file included from /usr/local/include/c++/7.1.0/bits/postypes.h:40:0,
from /usr/local/include/c++/7.1.0/iosfwd:40,
from /usr/local/include/c++/7.1.0/ios:38,
from /usr/local/include/c++/7.1.0/ostream:38,
from /usr/local/include/c++/7.1.0/iostream:39,
from main.C:1:
/usr/local/include/c++/7.1.0/cwchar:44:10: fatal error: wchar.h: No such file or directory
#include <wchar.h>
^~~~~~~~~
compilation terminated.
調べた対処法;gccを再インストールするのがいいらしい.
#gccを再インストールする
ということでhomebrewで再インストールを試みる
$ brew reinstall gcc
するとこんなエラーが
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/gfortran
Target /usr/local/bin/gfortran
already exists. You may want to remove it:
rm '/usr/local/bin/gfortran'
To force the link and overwrite all conflicting files:
brew link --overwrite gcc
To list all files that would be deleted:
brew link --overwrite --dry-run gcc
Possible conflicting files are:
/usr/local/bin/gfortran
とりあえず言われた通り/usr/local/bin/gfortran
を削除してみることに.
##gccを再インストールするために邪魔しているファイルを削除する.
$ rm /usr/local/bin/gfortran
こうするとこう聞かれる.
override rwxr-xr-x root/wheel for /usr/local/bin/gfortran?
ここでただreturnを押しても何も変わらない.
override rwxr-xr-x root/wheel for /usr/local/bin/gfortran? y
最後にyをつけてreturnを押すとちゃんと削除される.
もう一度再インストールを試みる.
$ brew reinstall gcc
すると今度はこんなエラーが
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink include/c++/8.3.0
/usr/local/include/c++ is not writable.
You can try again using:
brew link gcc
言われた通りやってみる
##gccを再インストールするためにリンクをつなぎ直す.
$ brew link gcc
そしたらこんなエラー
Error: Could not symlink include/c++/8.3.0
/usr/local/include/c++ is not writable.
これを解決するにはこれを書き換える権限は僕にあるんだぞおおおってことを言わなきゃいけない.
###gccを再インストールするためにリンクをつなぎ直すために管理者権限を変更する.
これを伝えるにはこう書けばいい.
$ sudo chown -R [ここにユーザー名]:admin /usr/local/include/c++
chownコマンドについてはこの記事参照
https://qiita.com/t-a-run/items/239ed690ece7a011804a
パスワードを求められるので入力.
再度リンクを試みる
$ brew link gcc
するとまたしてもエラー
Error: Could not symlink lib/gcc/8
/usr/local/lib/gcc is not writable.
おんなじように伝えてあげる
$ sudo chown -R [ここにユーザー名]:admin /usr/local/lib/gcc
僕はadminなんだぞおお!いうこと聞け!
三度目の正直
$ brew link gcc
上手く行った.
やっと本題に戻れる
$ brew reinstall gcc
今度は成功!
あとはこの記事に従ってエイリアスにシンボリックを貼っていけばできる!
https://qiita.com/wawawa/items/50c2c612b0937f28d92b
再インストールということだから,上記記事内のこの段階
$ ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc
この段階でもうすでにgccあるよ〜って怒られると思う.
ln: /usr/local/bin/gcc: File exists
そしたら先ほどと同じようにgccを消してやれば良い
$ rm gcc
こんな返事が返ってくるのでyをつけてreturn.
override rwxr-xr-x root/wheel for gcc? y
g++についても同様.
開発環境整えるの...一番辛いですよね...
QiitaとつよつよエンジニアブログとStack overflow(とweblio翻訳)を行ったり来たりして今日も頑張りましょう!
関係ないですが英語の文章をchromeで読む時,chrome Extensionsのweblioポップアップ英和辞典おすすめです!
https://chrome.google.com/webstore/detail/weblio%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E8%8B%B1%E5%92%8C%E8%BE%9E%E5%85%B8/oingodpdjohhkelnginmkagmkbplgema
英単語をダブルクリックするだけで和訳を表示してくれます!
これ入れてから英文読む時の精神的負荷が1/10くらいになりましたので...