Mojaveにしたらclangが動かないのを解決した
Apple clangから普通のclangに切り替えようとしたとき、clangがエラーを吐いてコンパイルできなくなってしまった。
macOSをMojaveにアップデートしたら起きるmacOS特有のエラーらしく、記事のとおりに試したが解決できずにいたのだが、その原因がわかり解決できたので、今回はその備忘録的なことを書く。
概要
Emacsのironyを動かしたくて、Apple clangからclangに切り替え。
brew install llvm
そのあとパスを設定。
だが、EmacsのironyがC++のメンバ関数の補完が動かない…
どういう状況かというと、例えば、下記のようなC++のコードがあったとき、
#include<iostream>
#include<vector>
using namespace std;
int main(int argc, char const *argv[])
{
vector<int> v;
return 0;
}
v.p
と入力すればv.push_back()
と補完されるはずだが、何故かされない…
変数やクラス名の補完は動いているのでEmacsのせいでは無いみたい…
clangのせいでは?
あれ?と思いclangでコンパイルしたら、
$ clang++ Test.cpp
In file included from Test.cpp:1:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/iostream:38:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/ios:215:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/iosfwd:90:
/usr/local/Cellar/llvm/7.0.1/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found
#include_next <wchar.h>
^~~~~~~~~
1 error generated.
なるほど…<wchar.h>
がないから動かない…と怒られてしまった。
原因はxcodeのCommandLineToolsが入ってないかららしい。
xcode-select --install
sudo xcode-select --switch /Library/Developer/CommandLineTools/
もう一度
$ clang++ Test.cpp
In file included from Test.cpp:1:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/iostream:38:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/ios:215:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/iosfwd:90:
/usr/local/Cellar/llvm/7.0.1/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found
#include_next <wchar.h>
^~~~~~~~~
1 error generated.
$ clang++ Test.cpp
In file included from Test.cpp:1:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/iostream:38:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/ios:215:
In file included from /usr/local/Cellar/llvm/7.0.1/include/c++/v1/iosfwd:90:
/usr/local/Cellar/llvm/7.0.1/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found
#include_next <wchar.h>
^~~~~~~~~
1 error generated.
動かない…
調査してみたら下記の記事が見つかった。
Install failed, "zlib not available" on macOS Mojave
これらによるとMojaveではxcode-select —install
してもソフトウェア(?)によってはヘッダファイルのインストールが失敗するみたい
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
結果
$ clang++ Test.cpp
$ ./a.out
やったぜ
使用したコード
Text.cpp
#include<iostream>
#define cout(x) cout << x << endl;
using namespace std;
int main(int argc, char const *argv[])
{
cout("やったぜ")
return 0;
}
$ clang++ Test.cpp
$ ./a.out
やったぜ
#include<iostream>
#define cout(x) cout << x << endl;
using namespace std;
int main(int argc, char const *argv[])
{
cout("やったぜ")
return 0;
}
Author And Source
この問題について(Mojaveにしたらclangが動かないのを解決した), 我々は、より多くの情報をここで見つけました https://qiita.com/HIKKO624/items/82f41eaaf18e62e45513著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .