Linux 環境で C++ アプリケーションを開発しています。私が毎日使用するツールには、Eclipse と CDT プラグイン、gdb、および valgrind が含まれます。
他の人はどのようなツールを使用していますか? Microsoft Visual Studio の滑らかさに匹敵する Linux 用の製品はありますか?
24 に答える
私はたくさんの端末ウィンドウを使用しています。興味深いソースファイルでvimを実行し、コンパイラエラーの場合は別のmakeおよびg ++出力を、ランタイムエラーの場合はgdbセッションを実行しています。定義を見つけるのに助けが必要な場合は、cscope を実行し、vim の cscope サポートを使用してジャンプします。
Eclipse CDT は私の 2 番目の選択肢です。それは素晴らしいですが、vimに比べて巨大で、不格好で遅いです。
ターミナル ウィンドウと vim の使用は非常に柔軟です。なぜなら、400 MB の Java を持ち歩く必要がないからです。どこからでも SSH セッションを使用できます。
メモリの問題を見つける必要がある場合は、valgrind を使用します。
私はstrace
自分のソフトウェアがシステム コール レベルで何をしているかを監視していました。time(0)
これにより、連続して 4 回呼び出しを行ったり、呼び出し回数が多すぎpoll()
たり、非ブロックになったり、一度に 1 バイトを読み取るためにソケットをread()
呼び出したりするような、非常に愚かなコードをクリーンアップできます。read()
(それは非常に非効率的で怠惰です!)
objdump -d
特にパフォーマンスに敏感な内部ループについては、マシンコードを検査するために使用します。これが、反復子を使用する場合と比較して、文字列に対する配列インデックス演算子の遅さなどを見つける方法です。
私は oprofile を使用して、最適化されたコード内のホット スポットを見つけようとします。多くの場合、gprof よりも少しうまく機能し、データや命令のキャッシュ ミスを探すなどのことができます。これにより、GCC の__builtin_prefetch
. 私はそれを使用して、誤って予測されたホットブランチも見つけようとしましたが、それをうまく機能させることができませんでした。
更新: perf は oprofile よりもはるかに優れていることがわかりました。少なくとも Linux では。perf の使い方を学び、私のように気に入ってください。
もちろん g++ だけでなく、非常に優れたクロスプラットフォーム IDE (Win32、*nix、Mac) であるCode::Blocksも含まれます。
私は SVN の毎晩 (最近は毎週のように) ビルドを使用しています。これには、最新の IDE に期待される機能がほぼすべて備わっています。本当に素晴らしいオープン ソース プロジェクトです。
また、Linux では、Valgrindを使用する喜びが得られます。Valgrind は、おそらくお金で買える最高のメモリ トラッカー (他のことも行う) ツールです。無料です :) メモリ リークなどを簡単に追跡できます。
そして、それだけではありません!Linux は素晴らしい開発プラットフォームです :)
(編集)質問でValgrindについて言及したことに気づきました。それを読むのが早すぎたのはばかげています。
Linux 用の C++ アプリを開発するとき、私は一連の cmdline ツールを使用することを好みます。Vim は多くのプラグインで拡張されています。ddd、valgrind、libefence、および SCons を備えた Gdb (automake は面倒です...どこか知っていますか)
g++
emacs
bash コマンドライン
emacs の gdb モード (タイプ MX gdb)
作る
emacs、cmake、gdb、git、valgrind。Visual Studio ほど洗練されていないかもしれませんが、うまく機能し、bash スクリプトまたは emacs lisp を介して機能を簡単に追加できます。
現在、私はQt Creatorを使用しています。これはクロスプラットフォームであり、Qt と非常にうまく統合されていますが、(もちろん) スタンドアロン アプリケーションを作成するオプションもあります。
g++ と make
KDevelop は Microsoft Visual Studio に最も近いと思います。あなたはほとんどすべてを手に入れます(残念ながら、実際にキラーであるVSデバッガーを除く)。すでに成熟しており、その開発はかなり速く有望です。
VSでは見られないいくつかのものを実際に実装しています。たとえば、ヘッダー ファイルと cpp ファイルを垂直タイル モードで開き、カーソルを両方で同期させます。つまり、関数プロトタイプを選択すると、常に右側にその実装が表示されます。
KDevelop は KDE プロジェクトですが、Gnome 上で実行されます。Anjuta は Gnome の同等のプロジェクトですが、実際の作業には使用できません。スタックの残りについては、gcc make valgrind ddd (gdb IDE) と python でコードをスクリプト化します。
VS IDE とは異なるアプローチを試してもよければ。vim を試すことを検討してください。とはいえ、慣れるまでには長い時間がかかります。
Eclipse CDTは本当に素晴らしいです。私は今でも時々 Emacs に頼らなければなりませんが、インデックス作成、呼び出しツリー、型ツリー、リファクタリングのサポート (Java リファクタリングとは違うと思います) などは本当に気に入っています。ローカル変数、関数の引数、メソッドなどの色)。コード補完も非常に便利です。私は主に Eclipse 3.3 を使用してきましたが、3.4 も優れています。
また、ほとんどの場合、ある程度大きなプロジェクト (~1e6 sloc) でこれを使用しています。おもちゃのプロジェクトではやり過ぎかもしれません。
標準ツールチェーン + IDE が必要です。
標準ツールチェーンについては何も言うことはありません。たとえば、Ubuntu / Debianにインストールするだけです
aptitude install build-essential
興味深い部分は、IDE に関するものです。
私の個人的な印象としては、21 世紀の今日では、vi/emacs/make/autotools/configure は、特定のサイズを超えるソフトウェア プロジェクトを開発するのに十分ではありません (...そして、そうです、遺産の異端について私を非難してください .. .)。
どの IDE を選択するかは、好みの問題です。SOF にはたくさんのスレッドがあります。これは、どの C++ IDE が「最適」であるかを議論するパーマリンクです: C++ IDE for Linux。
Linux で C++ コードを開発したとき、emacs をエディターおよび gdb フロントエンドとして使用しました。その後、私の会社はすべてのプログラマーのためにSlickEditを購入しました。これは優れた IDE ですが、Visual Studio と同等ではないかもしれません。gdb を広範囲に使用し、valgrind と gprof を時折使用しました。スクリプト言語を使用して、日常のタスクで C++ を補完することを強くお勧めします。私はPERLからPython、そして現在のルビーに行きました。それらはすべて仕事をやり遂げ、C++ に弱点があるところに強みがあります。もちろん、すべてのシェル コマンドを自由に使用できます。私は毎日、sort()、uniq()、awk などを使用しています。もう 1 つの推奨事項は、grep の後継者であるackです。
- GCC
- GHC
- ヴィム
- Cmake
- cscope
- GDB
- ヴァルグラインド
- トレース
- ギット
他に本当に必要なものはありますか?
私は NetBeans C++ プラグインを使用しています。これは優れており、CVS および SVN と統合されています。プロジェクト管理面も非常に優れています。数分で起動して実行しました。これは印象的な IDE ですが、Java であるため、少し動作が遅くなる可能性があります。
- CMake
- ヴィム
- g++
- kdevelop (毎日 SVN からコンパイル!)
- 可能な場合はMercurial、必要な場合はSVN、他に選択肢がない場合はgit(それを使用するプロジェクトに貢献)
- ヴァルグラインド
すでにリストされている多くのものに加えて、autoconfツールセットを使用してプログラムをユーザーに展開します。
- バッシュ
- ヴィム
- 作る
- G++
- GDB
- ヴァルグラインド
- グプロフ
- svn
タブをサポートする優れた端末を除いて、GUI は決して見られません。コード、デバッガー、出力などをすべて別のウィンドウに保持し、タブですばやく前後に移動します。
Miの最初の選択肢は、常に多くのプラグインを備えたemacsです。ecbは、フォルダー、gdb、svn、またはgitの統合をナビゲートするためのバッファーを提供します...これもPythonを使用したmiの最初の選択肢です。
2番目の選択肢として、C ++プラグインを備えたNetbeansは非常にシンプルで非常に強力ですが、重すぎると思います。
私は KDevelop のもう一人です。非常に多様なツールのセットがあります。私は VS と、そのインターフェイスを介してコンソール アクセスが統合されているかどうかについてあまり詳しくありませんが、KDevelop を使用すると、IDE 内で konsole を実行できます。これは常に非常に便利だと思います。Netbeans は C/C++ を完全にサポートするようになったので、いつでも試してみることができます。
それ以外では、コードの問題やその他のバグに対して、gdb とその gui ベースのバージョンの ddd をうまく利用しています。すでに投稿されている他のプログラムと同様に、使い捨てのプログラムの場合、端末で g++ を使用し、より大きなプロジェクトを作成します。
編集用の Eclipse CDT、ソース管理用の SVN、ビルド管理用の SCons、自動ビルド用の CruiseControl、および独自の単体テスト フレームワーク。
システムにあるものは何でも使用します。エディターとしては Eclipse CDT、コンパイラーとしては g++ を好みます。ただし、Eclipse がオプションでない場合は、vi を使用しますが、これも問題ありません。
Anjutaは、Linux C++ 開発者を非常に楽しくする素晴らしいアイデアです。
Eclipse インキュベーション プロジェクト Linux Tools は、C/C++ 開発ツールを統合します。Valgrind、GProf、GCov、SystemTap などのツールを Eclipse C++ CDT IDE に統合するための GUI プラグインです。
C/C++ Linux 開発者向けの Eclipse Helios IDE (インキュベーション コンポーネントを含む) を検索 (120 MB)
利用可能な .psf ファイルを使用して Linux ツールをビルドしようとした後、これを見つけました。ありがたいことに、このパッケージが Helios パッケージのダウンロード ページの一番下に隠れているのを見つけました。
これはインキュベーション プロジェクトであるため、時間の経過とともにサポートが向上することを期待できます。
関連項目: Eclipse Linux ツールのインストールと使用に関する最新情報については、ここをクリックしてください。
Windows では Eclipse+CDT を使用し、Linux ではクロス コンパイルに Cygwin + g++ を使用します。
(クロス コンパイラは、クロス コンパイラを生成するための優れたスクリプト セットである crosstool を使用して構築されます)
上記に加えて、静的コード分析用の FlexeLint:
CDT、gcc、make、gdb、valgrind、bash シェルを備えた Eclipse。
ソース バージョン管理: プロジェクトに応じて、Clearcase または git。