2012-01-05 7 views
9

私はこの質問を私のx86(64ビット)Linuxボックスの "ネイティブ"開発に限定しています。埋め込みアーキテクチャまたは非x86アーキテクチャはありません。Linux上でx86 C++開発のためには(動作している)代替ツールチェーンが存在しますか?

私はC++ユーザーで、C++ルネサンスがあるので、現在は個人向けプロジェクトにC++を使用しています。

今は堅牢な、traditionnal linux/gcc/makeツールチェーンを使用しています。

しかし、ブログの記事を通って、SOの質問、私は最近、新しい有望なツールを意識するようになりました:

  • 「はるかに高速「」のgcc「」のための代替として」打ち鳴らす「」、、より良いエラーメッセージを与えます
  • 「はるかに高速「「LD」」の代替として」金「」、

これらのツールはあまり知られており、それもそれらについて知っていないと簡単です。

知っておくべき他の興味深いツールはありますか?たとえばgdbなどの代わりに? (私もcmakeを使用しています)

私は最初の開発の容易さ、そして開発スピードの向上をお探しです。それ以外の改善は大歓迎です。

可能な限り、無料のツール。

+1

に切り替えるためにそれを使用する予定。それはLinux上での非商用使用のために無料です。それ以外の場合は費用がかかります。 –

+0

@PaulR Paulに感謝します。もちろん、私は無料のツールに興味があり、古いツールよりも目立った改善をもたらすツールです。 (インテルは実行速度を向上させると主張しているが、それは私が思うすべてだ) – Offirmo

+0

私のコメントで述べたように、ICC *はLinux上での非商用使用のために無料*です。良質のコード生成と同様に、通常、新しいCPU機能(明白な理由のため)をサポートする最初のコンパイラです。最新のSSE、AVXなど –

答えて

5
あなたが

Cについては

(ただし、C++)プログラミング(ちょうどあなたの$PATH内のシンボリックリンクを追加することで、無駄な再コンパイルを避けることができ、かつ、同じg++コマンドスルー透過的に使用可能なコンパイラキャッシュ)ccacheによって興味がある可能性

非常に速くコンパイルしますが(遅いバイナリコードが生成される)、tinyccが関心を持つかもしれません。

コーディングの場合、Boehm's garbage collectorを使用することができます。 C++での使用に関連するthis questionを参照してください。

また、メモリリークをデバッグするのにvalgrindを使用してください。

時々、共有オブジェクトを動的にロードすると、dlopenとなります。 dlsymのシンボルは、C++ではextern "C"である必要があります。私は時にはCやC++のコードをコンパイルしてコンパイルし、モジュールをdlopenで実行するのが大好きです。

ビルドするには、他のビルダーを検討することを検討してください。 omake

コンパイルするときは、コンパイラに対して-Wall(おそらくは-Wextra)フラグを忘れないようにしてください。新しいリンク時間の最適化(あなたのMakefileCXX=g++ -flto)は興味深いかもしれませんが(コンパイル時にはおそらく実行可能ファイルの速度が10%向上します)

ソースコードファイルがすべて同じC++ヘッダーを共有する場合、そのヘッダーをあらかじめコンパイルするだけの価値があります。

(C++よりも、例えば優れた)新しい言語はOCamlのやHaskellのように、存在してもしても、ペットのプロジェクトのためにGITのようなバージョン管理システムを使用し

を移動し、D.。

Qtは、特にグラフィカルツールキットのための優れたC++フレームワークです。

Wtを使用すると、非常に迅速にWebインターフェイスをC++でコーディングできます。

GCC & GDBはまだ進化しています。以前のバージョンよりも大幅に改善された最新バージョン(GCCでは4.6、GDBでは7.3など)を使用することを忘れないでください。

あなたの特定のニーズに合わせてGCCコンパイラを拡張またはカスタマイズすることを検討してください。プラグインを使用するか、さらにはMELT拡張を使用することをお勧めします。

+0

ここではOKの回答がたくさんあります(言語を変更するまでは行っていませんが、この質問を続けておきましょう)。 tinyccはCで、あまりにも悪いです。ガベージコレクタに興味があり、見ています。 – Offirmo

+0

@Basile Starynkevitch - +1の言葉 - 壁、すべてのビルドに必要です。 –

+0

私はMELTについて聞いたことがなく、とても面白いですね、ありがとう! – Offirmo

4

私は2つの選択肢を知っている:彼らは大規模なプロジェクトのために高速であるため、彼らは大規模なチェックを行いませんので、どちらが、メイクを置き換えることができます

+0

+1非常に面白い、ありがとう。 "Make vs Tup"は有望そうです。あなたはそれを自分で使っていますか?今、私たちにはcmake用のtup generatorが必要です。私はこの方向にいくつかの努力があることを知っています。 – Offirmo

+0

@Offirmo私の同僚はmakeからtupに切り替えようと努力しており、彼は約30%の改善を述べました。 –

1

ツールチェーンのメイク部分を交換するには、私は速く足跡が小さいwafをお勧めします。サポートはかなり良いです。

私は金よりも速くなかった金を試しましたが、有望であるようです。私がチェックした最後の時間は、実際には維持されていないようです。

clangはかなり有望ですが、私は制作プロジェクトでそれを試していません。私は、その熟考されたデザインが本当に速い開発につながるように計画しています。私は、デバッガやその他のツールが付属していますIntelのICCのコンパイラがありますC++ 11 ^^

MY2C

+1

金は維持されていますが、現在は実際には成熟しています。 Googleは金に積極的に関心を持っています。 –

+1

現在、GCC 4.6はclang 3.0よりもC++ 11のサポートが若干優れているようです。 –

+0

私は現在OSX上でLLVM GCC(基本的にはclang)を使用しています。 XCodeでは、clangはバックグラウンドで絶えずシンボルテーブルを構築しています。これにより、コードの完成度が高まり、文脈で認識され、前述のようにコンパイル/ビルド時間が短縮されます。 –

関連する問題