2011-08-04 2 views
4

私はg++ program_nameを入力しますが、私はgcc program_nameを入力したとき、私は未定義の参照のエラー画面分を取得するときに、なぜ私のプログラムは警告なしでうまくコンパイルん...私は標準ライブラリにかなりを使用しています私のC++プログラムをgccを使ってコンパイルするには、何か特別なことをする必要がありますか?

、ここに私が含まれます:

#include<string> 
#include<vector> 
#include<fstream> 
#include<sstream> 
#include<iomanip> 
#include<iostream> 
#include<algorithm> 

using namespace std; 

私が尋ねる理由は、今回はすべて、codeeval.comの挑戦のためのソリューションを開発することでした。これはg ++でコンパイルすると完全に動作しますが、gccでコンパイルされません。

ロングストーリーでは、codeevalが自分のものを動かそうとしたときに、テストの提出についてどのように考えているのか分かりませんが、スコアは0になります...ただ彼らは言う:Your program did not pass all the test cases or there may have been warnings printed out at runtime。もちろん

、私は彼らがそれをコンパイルしているか分からない...彼らは言う:

You submissions are executed in a *NIX type environment. Assume softwares/shells etc are in their standard locations. Nothing else.

(その提出義務づける方針にタイプミスを持っているので、他のものはアップかもしれません?)

彼らはまた、彼らはC++ 4.3.4のためのソリューションを受け入れると言います。私はcywinを実行しており、4.3.4はgccのバージョンです。

は、誰が今までcodeeval.comにC++のコードを提出するとの問題を抱えていますか?

私はスーパーイライラすることはないしようとしているが、この時点で、彼らは私にcodeevil.comのような多くのように見える...

+2

C++コードはg ++でのみコンパイルされます。 gccはCコードを意味します。 – iammilind

+0

'gcc - GNUプロジェクトCとC++コンパイラ ' – Jimmy

+0

g ++はg ++の上にあります。この結論に達するために、gccとg ++の両方のツールサイズをチェックすることができます。 – Arunmu

答えて

5

デフォルトでは、標準C++ライブラリでのgcc doesntのリンク。リンク行に-lstdC++を追加するか、g ++でコンパイルするだけです。

+0

ええ、私はちょうど.cppファイルを提出し、ビルドとリンクを担当します。* nix環境では、C++ヘッダファイルの標準的な場所はありますか?インクルードステートメントに完全なパスを入れる必要がありますか?私が書いたのは一般的な権利ですか?私のコードがなぜcodevalが使用するビルドプロセスで失敗するのかについてのアイデアはありますか? – Jimmy

+0

@ジミー:あなたは、問題についてcodeevalで人々に尋ねましたか?彼らはこれに答えている可能性が高くなります。 –

+0

@ベンジャミン:ちょうどそれらに連絡した... stackoverflowのつまずきを持っているための私のせい:)あなたはいつもちょうど非常に良いと高速です...この質問はおそらく削除することができますが、コンパイルのC + +コード;) – Jimmy

1

厳密に言えば、 "gcc"はGnu Cコンパイラで、 "g ++"は対応するC++コンパイラです。個人的には、ファイル接尾辞やコマンドライン引数に頼るのではなく、前者をCに、後者をC++に使う方が好きです。

関連する問題