2012-04-18 4 views
5

私はgccにデフォルトでいくつかのフラグを常に追加したいと思っています。gccにデフォルトでいくつかのフラグを追加する(できればスペックファイルを使用)

基本的に私はgcc(例えば、これに限定されない)を-g(デバッグ情報を持つように)を呼び出すたびに渡すフラグを持っています。

は、いくつかの回避策がありますが、彼らは醜いです:

  1. alias g++=...が、私はこのアプローチを好みません。
  2. 1と同様に、g ++を囲むスクリプトを作成します。
  3. ...

私はすべてがシームレスになるように、単にスペックファイルを修正することを好むだろう。

+0

[gcc 4.3のデフォルト仕様ファイルを設定する方法?](http://stackoverflow.com/questions/5778449/how-to-set-gcc-4-3-default-specs -file) –

答えて

1

スペックファイルを変更する際の問題は、いくつかのオプションについて考え直すことです。コマンドラインからキャンセルすることはできません。 specsファイルを変更する必要があります。また、コンパイラーをアップグレードするときには、新しいスペックファイルを修正する必要があります。

また、コマンドラインからコンパイラを実行する頻度はどのくらいですか?一時的にコマンドラインをハックする必要があるときだけですが、makefileのコンパイラオプションを修正する方法を検討するのに気を使うことはできません。コンパイルオプションをmakefileにコピーします。 makeの出力を受け取り、コンパイラを実行します。 aliasに関する1つの問題は、makefileの内部では機能しないことです。だから、私にとっては、コンパイラのオプションがすべてのメークファイルで確実に使用されるようにすることが、この問題を軽減します。

+1

これには正当なユースケースがあり、それをコマンドラインから呼び出すことはありません。 GCCドライバに代替のlibc、例えば代替ヘッダを探す場所を教えたいかもしれません。または、「デフォルト」ヘッダーを追加します。 – 0xC0000022L

7

strace gcc | grep specsを実行してスペックファイルの検索先を確認してから、gcc -dumpspecs > specsを実行してください。これで、スペックファイルを編集できるようになりました。このリファレンスを使用してください:https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

+3

straceがstderrに出力するので、 '|'の直前に2>&1を追加する必要があります。私は、straceの出力から提案された場所に変更されたspecsファイルを追加し、ダミーcppでg ++ -vを実行して、期待されるオプションを観察することで、VM上のアイデアをテストしました。 – Syncopated

+0

私たちに例を教えてもらえますか?例えば。どのようにデフォルトのリンカオプションを追加するか、それはいつもありますか?またはC++コンパイラオプション、またはCコンパイラオプション? – Calmarius

+0

このスペックファイルは、最初の外観ではかなり複雑です。リンカ、Cコンパイラ、またはC++コンパイラにデフォルトのオプションを追加する方法の例を、%マークと{}を使って表示できますか? – Calmarius

関連する問題