質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.37%
Clang

Clangは、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラである。

Q&A

解決済

1回答

10008閲覧

clangのエラーに困っています。

_volatile

総合スコア13

Clang

Clangは、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラである。

0グッド

0クリップ

投稿2018/12/17 14:13

clangを導入したのですが、コンパイルするとエラーが発生して困っています。

C++

1#include <iostream> 2int main(){ 3 std::cout << "test" << std::endl; 4}
C:\Users(ユーザー名)\source>clang++ -v clang version 7.0.0 (tags/RELEASE_700/final) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin C:\Users(ユーザー名)\source>clang++ -g -v source.cpp clang version 7.0.0 (tags/RELEASE_700/final) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin clang++.exe: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found] "C:\Program Files\LLVM\bin\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.11.0 -emit-obj -mrelax-all -mincremental-linker-compatible -disable-free -disable-llvm-verifier -discard-value-names -main-file-name source.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -momit-leaf-frame-pointer -v -resource-dir "C:\Program Files\LLVM\lib\clang\7.0.0" -internal-isystem "C:\Program Files\LLVM\lib\clang\7.0.0\include" -internal-isystem C:/Program Files/Microsoft Visual Studio 10.0/VC/include -internal-isystem C:/Program Files/Microsoft Visual Studio 9.0/VC/include -internal-isystem C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include -internal-isystem C:/Program Files/Microsoft Visual Studio 8/VC/include -internal-isystem C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include -fdeprecated-macro -fdebug-compilation-dir "C:\Users\Hiiragi\source" -ferror-limit 19 -fmessage-length 119 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.11 -std=c++14 -fdelayed-template-parsing -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o "C:\Users\Hiiragi\AppData\Local\Temp\source-3068fc.o" -x c++ source.cpp clang -cc1 version 7.0.0 based upon LLVM 7.0.0 default target x86_64-pc-win32 ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 10.0/VC/include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include" #include "..." search starts here: #include <...> search starts here: C:\Program Files\LLVM\lib\clang\7.0.0\include End of search list. source.cpp:1:10: fatal error: 'iostream' file not found #include <iostream> ^~~~~~~~~~ 1 error generated.

ターゲットがmsvcになっているようで、iostreamのファイルがないと言われます。
VisualStudioは結構前にアンインストールしている状態なのですが…

一応MinGW、LLVMの再インストール等も試しましたが駄目でした。
msvcではなくgnuのヘッダファイルを適用させる為に
x86_64-pc-windows-msvcからx86_64-pc-windows-gnuにターゲットを変更させるにはどうすれば良いのでしょうか?

###バージョン(gcc -v / clang -v)

C:\Users(ユーザー名)>gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe Target: mingw32 Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls Thread model: win32 gcc version 6.3.0 (MinGW.org GCC-6.3.0-1) C:\Users(ユーザー名)>clang -v clang version 7.0.0 (tags/RELEASE_700/final) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

2年ほど前の話ですので状況は変わっている可能性もありますし、clangそのものではなくclangの一部であるlibToolingの話ですが、clangはシステム・インクルード・パスをハードコーディングしているようです。
libToolingをmsvcでビルドするとmsvcのシステム・インクルード・パスになりました。MinGWでビルドするとMinGWのシステム・インクルード・パスになりました。
少なくとも当時はCompiler-RTがWindows用に提供されていなかったので、clangをコンパイルしたコンパイラのランタイム・ライブラリに依存していたからではないかと思います。

現在どうなのか把握していませんが、もし、Compiler-RT(clangのランタイム・ライブラリ)がWindows向けに提供されているようでしたら、それをインストールすれば良いはずです。
が、リンク先を見るとサポートOSにWindowsの記載がないようです。

投稿2018/12/17 17:40

編集2018/12/17 17:41
Chironian

総合スコア23272

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

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

_volatile

2018/12/18 07:05

ありがとうございます。どうやらwindowsのclangはデフォルトでmsvcをターゲットするみたいです…。 コンパイルのオプションに --target=i686--target=i686-pc-windows-gnu を付けることでコンパイルに成功しましたが、 恒久的に変更する方法は探しても見つからないみたいですね…。
Chironian

2018/12/18 07:25

なるほど、クロス・コンパイル用のオプションを使えばシステム・インクルードを切り替えることができるのですね。 MinGWのランタイム・ライブラリdllへのPATHを通せば起動できそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問