web-dev-qa-db-ja.com

高速コンパイラーとクロスプラットフォームの可能性がある組み込みLinux C ++開発に使用するツール

Linuxベース(Ubuntu 10.04)機器のビルド環境に満足していません。私たちが開発している組み込みソフトウェアです。私が望むのは、これらの願いを最適に組み合わせることです。

  • 実績のあるツールとライブラリを使用する
  • LinuxとWindowsの両方で開発できる
    • 理想的には、両方のプラットフォームで同じツールを使用します
  • 特にWindowsでの開発サイクルが速い

良いものに支払うことは間違いなくオプションであることに注意してください。また、C++とLinuxだけが2つの難しい要件であり、他のすべては議論の余地があることにも注意してください。

現在、可能な限り多くのプラットフォームの独立性を得るために、BoostおよびSTLライブラリを使用しています。 CodeBlocksはクロスプラットフォームですIDEそしてgccツールチェーン(コンパイラ、リンカー、デバッガ、makeではありません)を使用します。すべて優れたオープンソースプロジェクトですが、制限があります。

現在の環境での最大の問題:

  1. MS Visual C++と比較して、gccは非常に遅いと感じています。コンパイル、特にリンクに多くの時間が費やされています。 gccのプリコンパイル済みヘッダーのサポートでは、VCの場合とほぼ同じパフォーマンスの向上は得られず、Boostを使用すると、本当に必要になります。また、いくつかのBoostライブラリを静的にリンクするには永遠に時間がかかります(動的を使用します)リンクは大きく変わりますか?)
  2. CodeBlocksは、VCの何がプロパティファイルであるかをサポートしていません。このため、ワークスペース内のすべてのプロジェクトでビルドオプションを同じにすることは困難です。
  3. ビルド速度に関連:CodeBlocksにはVCのような「このプロジェクトのみをコンパイルする」サポートはありません。単一のソースファイルを変更する場合、CodeBlocksは私が知っているファイルをコンパイルする必要性をチェックするのに時間がかかりすぎます変更されていません。

これまでの私自身の考えのいくつか:

  • 最大の問題は、開発するすべてのプラットフォームに高速で信頼性の高いコンパイラとリンカーがあることです。これが解決した場合、複数のプラットフォームで開発を行うのはどうですか?インテルC++コンパイラーはオプションですか(これらのコンパイラーのパフォーマンスの最適化は実際には必要ありません)?クロスコンパイルを検討すべきでしょうか?
  • Makeベースのビルドを使用する必要がありますか? WindowsとLinuxで同じIDE /ビルドツールを使用するのが難しいことがわかったときの解決策のようです。私はそれが私を妨げているので難しいと思います。
  • WindowsおよびLinuxで利用可能なVisualStudio(IDEおよびツールチェーン)と同等の成熟度の単一の製品はありますか?それとも、Linuxの場合のみですか?
  • Linuxのみで開発することにした場合、人生はどれほど簡単になるでしょうか。現在、ITによってサポートされているため、私たち全員がWindowsを使用しています。非開発ソフトウェアはすべてWindowsであり、当社でのLinuxの専門知識は限られています。

あなたの考えをお願いします。

4
Mark

「最高の」と聞いたIDEは Netbeans です。もちろん、Code:Blocksはオープンソースなので、その動作を確認できます何をコンパイルして修正するかを決めるとき:)速度に関する未解決のバグはありません bugtracker

コンパイル:makefileでこれを高速化できますが、Code :: Blocksはmakeflesを内部で使用すると想定します(ハ!)。確かに、設定に問題があると思います。少し調査する必要があります。そうでない場合は、環境をライブラリに分割し、それらを個別にコンパイルすると便利です。

GCC pch がそれほど悪いと思う理由がわかりません。 Visual Studioは、stdafx.hによって参照されるすべてのものをpchファイルにコンピングすることで機能します。したがって、同じ方法でyuorコードを整理してみませんか。他のすべてのヘッダーを含む「stdafx.h」ファイルを作成し、-xフラグを付けます。 、プリコンパイル済みヘッダーに組み込みます。その時は非常に速いはずです。

プロジェクトファイル:すべての詳細が含まれている「ワークスペース」ファイルはありませんか。その場合、プロジェクト全体でプロパティを確実に更新することは、これらのファイルをメモ帳で更新するという非常に簡単な作業です。ビジュアルスタジオの.vcprojファイルに対してこれを行うことがあります-プロパティダイアログで自分の方法をクリックするのに非常に時間がかかり、面倒な場合は、メモ帳(またはwinmerge)を使用してそれらの多くを編集してプロジェクト設定を複数のプロジェクトファイルに適用します。

Make:makeは本当に簡単です。 VSプロジェクトファイルが(現在)xmlベースのmakefileの表現であるほどです。ほとんどのmakefileは、使用するコンパイラオプションを指定するだけで、「すべての.cppを.oファイルに変換する」というセクションと、アプリを作成するためにリンクする.oファイルを示す行があります。本当に簡単です 10分を費やしてください それを理解すればそれだけの価値があります。 makefileを使用したくない場合は、 Ant のようにしてみてください。

Gccは非常に優れたコンパイラであり、VC++よりも高速なコードを生成することがよくあります。 Intelのコンパイラ(別の良い選択)に切り替えると、付属のEclipseが気に入らない限り、IDEが必要になります。

Windowsを使用していて、Windowsのコードを記述していて、WindowsとVSの経験が豊富な場合は、VSを完全に使用しないのはなぜですか。クロスコンパイルはオプションですが、いくつかのメイクファイルとビルドサーバーを作成する場合は、Windowsの開発中にLinuxボックスにコードを自動的にコンパイルさせることができます。あなたはまだコードのクロスプラットフォームの性質をテストして理解する必要がありますが、あなたが何をしているのかわかっているなら、あなたは本当にLinuxで開発する必要はないでしょう。 (あなたの中では、反対のことをして、Windowsバイナリを自動的に構築し、Linuxですべての開発を行うことができます)。ビルドサーバーには Hudson をお勧めします。セットアップと実行は、非常に簡単です。

1
gbjbaanb

MinGW を使用して、Linux/Unix環境で使用しているのと同じツールをWindows環境に取り込むことができます。 Windowsで cygwin を使用して同じことを行うこともできます。私は自分でmakefileを作成し、gccを使用します(ただし、gccが気に入らないようです)。 gccに代わる、より優れた無料の代替手段はわかりません。個人的には、私はVIMまたはEmacs、GDBを使用し、すべての環境でこれらのツールを使用します(または愛することを学ぶ Code :: Blocks ))。

* nixおよびC開発の考え方は、環境全体がビルド/開発環境...ウィンドウであり、それほど多くはないということです。

0
jmq