186

GCC4.3を使用してC++アプリをコンパイルしています。使用している最適化フラグを手動で選択する代わりに-march=native、理論的には、コンパイルしているハードウェアに適用可能なすべての最適化フラグを追加する必要があります。しかし、実際に使用しているフラグを確認するにはどうすればよいですか?

4

5 に答える 5

170

-Q --help=target次のオプションを使用できます。

gcc -march=native -Q --help=target ...

この-vオプションも役立つ場合があります。

--helpオプションに関するドキュメントはこちらでご覧いただけます

于 2011-03-29T09:24:27.747 に答える
136

コマンドライン フラグを表示するには、次を使用します。

gcc -march=native -E -v - </dev/null 2>&1 | grep cc1

特定のパラメーターによって設定されたコンパイラー/プリコンパイラー定義を表示するには、次のようにします。

echo | gcc -dM -E - -march=native
于 2012-02-20T03:30:15.373 に答える
28

次のようになります (-###は に似ています-v):

echo | gcc -### -E - -march=native 

gcc の「実際の」ネイティブ フラグを表示します。

次のコマンドを使用して、それらをより「明確に」表示することができます。

gcc -### -E - -march=native 2>&1 | sed -r '/cc1/!d;s/(")|(^.* - )//g'

-mno-* でフラグを取り除くことができます:

gcc -### -E - -march=native 2>&1 | sed -r '/cc1/!d;s/(")|(^.* - )|( -mno-[^\ ]+)//g'
于 2013-09-23T15:26:28.393 に答える
14

非ネイティブ クロス コンパイルのセットアップ方法を知りたい場合は、次の記事が役立ちます。

ターゲットマシンで、

% gcc -march=native -Q --help=target | grep march
-march=                               core-avx-i

次に、ビルド マシンでこれを使用します。

% gcc -march=core-avx-i ...
于 2014-06-13T20:21:14.457 に答える