kumasysjp

GCCのオプション

◆ gcc(cc),  g++,  c++  のオプション

 -v GCCの実行コマンドを詳細表示するオプション
 -E  [source] > [ psed source] ソースのプリプロセス。すなはち最適化。

 

 -On (コンパイル時) 最適化レベルの指定。O1 は高速、O4 は最も最適化。
 -w (コンパイル時)  warning の抑制
 -Wx

-Wall  ( -W)

(コンパイル時)x に関する警告を出す。Wall なら all.
 -g (コンパイル時)デバッガ情報の付加
 -s (コンパイル時)シンボル情報を削除。デバッグする場合はこれを付けないこと。
 -S  [source] -o [assemble file] Cソースから アセンブラファイルを生成。アセンブラからオブジェクトファイルの生成は  gcc -c  < assembler file>
 -lxx (リンク時)登録されている libxx.a,  libxx.so  を検索
 -rdynamic (リンク時)実行ファイルが共有ライブラリからアクセスされたいときに付ける。通常付ける必要ない。
 -MD [source] 依存関係(include header) を Dファイルとして出力. ただしファイル名は指定できない。
 -MF [d file] -MD に付加してつけるオプション.  出力Dファイルに任意名がつけられる。
 -MT <target> Dファイルの”:” の左部分を  <target> にするだけのオプション。makefile に転用したい場合に用いるのだろうが、あまり有難いオプションではない。

 

<マクロ関係>

 -Dmacro マクロmacroを文字列`1′として定義します。
 -Dmacro=defn マクロmacrodefnとして定義します。 コマンドライン上にあるすべての`-D’オプションは、 どの`-U’オプションよりも前に処理されます。
 -dM プリプロセッサに対して、 前処理の終了時点において有効なマクロ定義の一覧だけを出力するよう指示します。 `-E’オプションとともに使います
 -dD プリプロセッサに対して、 マクロの正しい出現順序で、 すべてのマクロ定義を出力へ渡すよう指示します。
 -dN `-dD’と似ていますが、 マクロ引数とマクロ定義の内容が省かれる点が違います。 `#define nameという形式の情報だけが出力に含まれます。

マクロはライブラリの header ファイル内で ifdef で用いられているので、このようなオプションをつけてコンパイルする。

関連

.a(静的ライブラリ) の利点

GNU ar : 静的ライブラリの作成

lddコマンド e.g. cannot open shared object file (soが開けない)

 

LINK

https://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html

https://www.cqpub.co.jp/interface/column/freesoft/2002/200212/0.htm

各種テスト – gcc (loose-info.com)