ClangでC ++をコンパイルするにはどうすればよいですか?


97

私がインストールされているクランを Ubuntuの中でapt-getをを使用することによって、私は正常にコンパイルCファイルには、それを使用することができます。ただし、C ++をコンパイルする方法はわかりません。C ++をコンパイルするには何をする必要がありますか?

回答:


147

コマンドclangはC用で、コマンドclang++はC ++用です。


48

また、後世のために-Clang(GCCなど)は-x、入力ファイルの言語を設定するスイッチを受け入れます。たとえば、

$ clang -x c++ some_random_file.txt

このメーリングリストのスレッドが違いを説明clangし、clang++うまく:打ち鳴らすと打ち鳴らすの違いを++


4
でcppファイルをコンパイルすると、clang -x c ++でリンカーエラーが発生しました#include <iostream>-lstdc ++フラグはこの問題を解決しました。
スレーブは2015年

1
Clangのソースコードが目の前にあります。(Windowsでの)ビルド中に、最初にをビルドしclang.exe、次にその実行可能ファイルをにコピーしますclang++.exe。したがって、実行可能ファイルは同じですが、実行時に自身の名前をチェックして、CまたはC ++コンパイラーとして動作するかどうかを区別します。HTH。
セルジュ・ロガッチ2017年

注意点として、オプションは-x c++として与えるために非常に有用であった-extra-arg打ち鳴らす、きちんと代わりにCのC ++含むと.hファイルを処理するためにそれを強制するために、
広告N

ソースからすべてを構築しない限り、これは実際には有用ではありません。使用clang++して、どのような種類のファイルを提供するかを検出させるのが良いでしょう。プロジェクトに含めることができる場合は.cpp、ファイル、.llファイル(LLVM IR)と.o.a.soサードパーティのライブラリから、何ていないファイルを、clang -x c++ちょうどスローされます。
Sahsahae、

47

問題に直接対処する答えがない理由はわかりません。C ++プログラムをコンパイルする場合は、を使用するのが最適clang++です。たとえば、私にとっては次のように機能します。

clang++ -Wall -std=c++11 test.cc -o test

正しくコンパイルされていれば、実行可能ファイルが生成testされ、を使用してファイルを実行できます./test

またはclang++ test.cc、プログラムのコンパイルに使用することもできます。という名前のデフォルトの実行可能ファイルが作成されa.outます。./a.outファイルを実行するために使用します。

プロセス全体は、g ++に精通している場合はg ++によく似ています。オプションに含まれる警告を確認するには、この投稿を参照してください-Wallこのページには、Clangでサポートされている診断フラグのリストが表示されます。


4
実際に質問にお答えいただきありがとうございます。
Curyous 2018

4

ソースからClangをビルドするときに同様の問題が発生しました(ただし、sudo apt-get installこれはを使用していません。これは、実行しているUbuntuのバージョンによって異なる場合があります)。

clang++C ++ライブラリの正しい場所を見つけることができるかどうかをチェックする価値があるかもしれません:

結果を比較g++ -v <filename.cpp>し、clang++ -v <filename.cpp>下に、「ここの#include <...>検索開始:」。


0

ソリューション1:

  clang++ your.cpp

ソリューション2:

  clang your.cpp -lstdc++

ソリューション3:

   clang -x c++ your.cpp 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.