2016-12-12 70 views
0
#include <iostream> 
using namespace std; 

int main(){ 
    std::cout << "Hello World\n"; 
    return 0; 
} 

命令1(作品)不能包含在C++標準文件庫

clang hello.cc -o hello -lc++ 

命令2(沒有工作)

/path/to/custom/clang hello.cc -o hello -lc++ 

main.cc:2:10: fatal error: 'iostream' file not found 
#include <iostream> 
     ^
1 error generated. 

爲什麼我不能command 2編譯?

回答

1

這是一個已知的Ubuntu問題。他們的clang只是沒有設置正確。我抱怨它here - 這個多年來一直沒有固定。

好消息是它現在與最新的16.10版本一起使用。

編輯:根據您更新的問題,我會說「自定義clang」不知道它的包含文件。

+0

我在macOS上。也許這是同一個問題。 有沒有解決方法來解決這個問題? –

+0

我曾經使用-I開關,但它變得更加混亂,因爲C++標準庫的兩種可能的實現。我沒有OS X盒子,但是朋友們,'clang'和'clang ++'顯然適合他們。但有時候,還需要'g ++'(比如說獲得OpenMP)。 [他的博客](http://thecoatlessprofessor.com/),我的朋友@coatless。 –

3

它看起來像你想用C編譯器編譯C++。改爲嘗試運行clang++

clang++ hello.cc -o hello 

沒有運行clang作爲C++編譯器,它不會有C++標準庫頭可供您包括。使用clang++ C++標準庫頭文件可用,並且C++標準庫自動鏈接到您。

+1

你說得對。我已經嘗試了一個C程序,它的工作原理。我發現我使用的[custom clang](https://github.com/obfuscator-llvm/obfuscator/tree/clang-425.0.24)不包含鏗鏘聲++。 –