2012-01-11 11 views
0

私の大学の教授は、彼のC++クラスで私たちのための要件を与えました:私たちのプログラムはgnu C++コンパイラ(GCC)を使って書く必要があります。私はxcodeをインストールした後、gccのアップル版を手に入れたことを理解しています。しかし、これは私が理解しているように完全に互換性のあるものではありません。だから、私はgnu gccコンパイラをMacポートを使ってインストールしようとしましたが、失敗しました。行った後:私のMacにクロスプラットフォームのC++プログラムを書く方法はありますか?

私はターミナルに移動し、実行
port install gcc47 

gcc -v 

を私が手::

gcc47 -v 

私は は私が実行すると、 "コマンドが見つかりません" を取得

gcc version 4.2.1 (Apple Inc. build 5666) (dot 3) 

帽子私はまだリンゴのバージョンを使用しています。私は理解していないです一部です:

  1. どのように私は、Eclipseなどのgcc(GNUバージョンではなく、Apple版)
  2. は、どのように私は、IDEでそれを使うのですが、インストールしますか?
+0

アップルのGCCのバージョンは、他のバージョンのGCCと互換性があります。 C++標準ライブラリで関数を使用するだけであれば、同じソースコードをC++コンパイラを持つ任意のプラットフォームでコンパイルすることができます。あるコンパイラで動作するコードと、別のコンパイラでは動作しないコードが矛盾することがありますが、AppleのGCCはその点で特別なものではありません。 –

+0

新しいコンパイラをインストールするときに正しいことをしたように思えますが、gcc47をインストールしたときにエラーメッセージが表示されましたか?そうでない場合は、/ opt/local/bin/gcc47を試してください。それ以外の場合は、問題が見つかるまでXCodeのgccを使用します。 –

答えて

0

使用するGCCのバージョン(Appleまたはgnuネイティブ)は、続行するためには関係ありません。

ポータブルC++の記述は、コンパイラとは関係ありません。コンパイラの保証外では、C++標準に準拠することが最善です。 幸運にも、GCCは最高のC++コンパイラです。

実際の移植性の高いC++は、様々なシステム用のさまざまなC++コンパイラの状態(例えば、VAX/VMSのCCなど)があるため、多少の苦労があります。テンプレートはサポートしていません...)。私はあなたがあなたのMacで書くコードを確実にすることを望んでいると思う、あなたのprofによってコンパイルすることができます。 GCCがあなたのMacでそれを処理できる限り、それはうまくいくはずです。だからあなたの特定の質問に

:あなたはあなたのコードをコンパイルするために、Appleの供給グラム++を使用することができますよう

あなたの最初の質問は、不要です。

あなたの2番目の質問では、私は強くIDEを使用することをお勧めします。 IDEは本当に素晴らしい時間節約機能を提供しますが、学習プロセスの早い段階で苦労する価値があると考えられる重要な側面を隠し、C++スキルを強化するのに役立ちます。物事は確かに良くなったが、一部のIDEはポータブルではないC++(すなわちvoid main()を使用)を作成することで有名だった。

Eclipseを使用している場合でもXCodeを使用している場合は、どのGCCインストールを使用しても構わないので、デフォルトの設定はうまくいくはずです。

+1

プラットフォーム間で動作するバイナリをコンパイルしたくないと思います。私はまた、IDEについてのあなたの意見を理解しています。しかし、私が避けようとしている主な問題は、私の教授とは異なる環境を持っていることです。彼はgnu gccを使ってコンパイルします。私が何か他のものを使ってコンパイルすると、自分のプラットフォームで自分のコードをコンパイルしようとするときに、いくつかの問題に遭遇する可能性があります。これは私が解決しようとしている問題です。 – justspamjustin

+1

理解しやすい。非常にエッジのあることをしない限り、あなたのMacにインストールされているデフォルトのgccコンパイラでうまくいくはずです。 – Alan

0

私は過去にポート経由でgcc47をインストールする際に問題に遭遇しましたが、gcc46は期待通りに行きました。 gcc_selectをインストールすることもできます。

そこから、gcc_selectを使用するか、Eclipseのツールチェーンエディタでパスを明示的に指定することができます。

その他の注意事項:

  • あなたがC++ 11の機能を必要としない場合は、AppleのGCC 4.2.1は正常に動作する必要があります。おそらくあなたはそれを使用できない理由を詳述することができます。基本的に、アップル社はツールチェーンにいくつかの拡張機能(APPLE_ONLYとマークされている)を追加し、どのオプションが有効/無効になっているかを適切に管理しています。

  • Xcodeで提供されるClangの最近のバージョンでは、C++をうまく処理します(C++ 11のサポートを含む)。 Clangを使うときにはGCCのいくつかの先進的なことがありますが、Clangの現在のC++サポートはとても良いです。

関連する問題