Linux上でg ++コンパイラを使い始めたばかりで、コンパイラフラグについていくつか質問があります。ここで私は最適化フラグG ++のマニュアルページで-O1
、-O2
と-O3
について読み、彼らg ++で静的ライブラリを作成するための最適化とフラグ
最適化
です。私はこれらのフラグをいつ使用するのか理解していませんでした。通常どのような最適化レベルを使用していますか? g ++のマニュアルでは、-O2
について次のように述べています。
さらに最適化します。 GCCは、空間速度のトレードオフを伴わないほとんどすべてのサポートされた最適化を実行します。コンパイラは、-O2を指定すると、ループアンローリングまたは関数インライン化を実行しません。 -Oと比較して、コンパイル時間と生成されたコードのパフォーマンスの両方が向上します。
インライン展開とループアンローリングを行っていない場合、そのパフォーマンスがどのように達成され、このオプションが推奨されていますか?
静的ライブラリ、私はグラムを使用して静的ライブラリを作成するにはどうすればよい
++? Visual Studioでは、私はクラスライブラリプロジェクトを選択することができ、それは "lib"ファイルにコンパイルされます。 g ++で同等のものは何ですか?
[2003年、GCCの-O3はバグがあって悪いラップだった。](http://stackoverflow.com/a/11546263/845092)今日、それはルールを破るときだけ悪いコードを生成するが、結果が出ると怒ってしまうので、違法コードを書くことの結果を避けるために-O2に固執します。 –