2012-04-19 5 views
2

私はClangとCh(C++インタプリタ)で読んでいましたが、私には明らかではありませんが、インストールせずに新しく生成された.cppファイルを実行することは可能ですか?私はどのPCでも最終的なプログラムを実行する必要があるので...C++ファイルを特別なプログラムやインストールなしでコンパイルできますか?

ps。はいの場合、誰かが良い例を持っていますか?どこで.cppファイルがC++コード内で実行されていますか?

答えて

3

これはおそらく不可能であるか、少なくとも非常に困難です。プログラム内にコンパイラ全体(リンカ、アセンブラ、オプティマイザ、プリプロセッサなど)を含める必要があり、それでが極端にになります。

これを行う1つの方法は、クラン(すでに述べたように)である

、ソースに「クラン・インタープリタ」と呼ばれるデモプロジェクトでもあります:http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/clang-interpreter/

私は一度にこの「獣」をコンパイルしようとしたが結果バイナリ(または外部ライブラリを持つバイナリ)のファイルサイズが数十メガバイト(おそらく百も)になるので、私のプログラムは途中で中断しました。

私は、簡単に解釈できる別のスクリプト(たとえば、UNIXマシンで実行できるbash/shスクリプト)を作成することをお勧めします。

+0

感謝を見つけることができ、あなたは、イムは「バッチファイルソリューション」と一緒に行く、感謝を決心しました。 – krishkule

0

種類は「インストール」の意味に依存します。

はい、完全なコンパイラでプログラムを配布し、ソースコードをコンパイルしてから最終結果(元のexeからすべて)を実行することができます。

2

CPPファイルのコンパイル処理がthis-

  1. 前処理のようなものですので、私の知る限りでは、それは、不可能である:プリプロセッサは#include SとC++ソースコードファイルやお得な情報をとり、#define sおよびその他のプリプロセッサディレクティブを使用します。このステップの出力は、プリプロセッサ指令がない「純粋な」C++ファイルです。

  2. コンパイル:コンパイラはプリプロセッサの出力を受け取り、そこからオブジェクトファイルを生成します。

  3. リンカー:リンカーは、コンパイラーによって生成されたオブジェクトファイルを受け取り、ライブラリーまたは実行可能ファイルのいずれかを生成します。

したがって、中間ファイルと実行可能ファイルが必要です。

詳細はhere-

https://stackoverflow.com/a/6264256/7725220

関連する問題