gcc



gccとは

GCC(GNU C Compiler)は、ANSI規格 (ANSI X3.159-1989) 準拠のC言語コンパイラです。

なお、GNU Compiler Collectionは、GNUのコンパイラ群です。

GNU C++コンパイラをG++、GNU JavaコンパイラをGCJ、GNU AdaコンパイラをGNATと呼びます。


gccの使い方

コマンドラインから簡易的にコンパイルする場合など、基本的な使い方のみ記述します。

複雑な構成のソースコードを一括してコンパイルする場合にはMakefileautotoolsなどを利用します。

コマンドの詳細やOSによる仕様の違いなどは、コマンドマニュアル(man gccコマンド)で確認してください。


コンパイル:ソースコードから実行ファイルを作成する。

コンパイル先バイナリ名が指定されていない場合、実行ファイル「a.out」が作成されます。

$ gcc program.c
$ ./a.out

実行ファイルの名前を変えたいときは、「-o」(オーの小文字)オプションを使います。

以下のコマンドで、実行ファイル「program」が作成されます。

$ gcc -o program program.c
$ ./sample

複数のソースコードをコンパイルする場合は、ソースコードを列挙します。

$ gcc -o program program.c program.c program.c

オブジェクトの作成

コンパイルのみ実行すると、オブジェクトファイルが生成されます。

以下のコマンドで、オブジェクトファイルprogram.oが作成されます。

$ gcc -c program.c

作成したオブジェクトファイルをリンクには以下のコマンドを実行します。

$ gcc -o program program.o

ライブラリをリンクする

コンパイルする際、外部ライブラリを必要とする場合、「-l」を使います。

curses.hの場合「-lcurses」となります。

$ gcc program.c -lcurses

コンパイラの警告を表示する

ワーニング(コンパイル時の警告)を全て表示するには、「-Wall」オプションを使います。

$ gcc -Wall -o program program.c

デバッグ情報を生成

デバッグ情報を生成するには、「-g」オプションを使います。

このオプションを付けることにより、gdbなどでデバッグが出来ます。

$ gcc -g -o program program.c

最適化

最適化を行いたい時は、「-O2」(オーの大文字)オプションを使います

$ gcc -O2 -o program program.c

シンボル情報を削除する

「-s」オプションでコンパイルすると、出力ファイルから全てのシンボル情報を省くため実行ファイルのサイズが減少します。

stripコマンドを実行することと同じです。

$ gcc -s -o sample sample.c

OS開発で使用するオプション

-nostdinc ヘッダファイルのための標準のシステムディレクトリを検索しません。‘-I’オプションによって指定したディレクトリ (またはカレントディレクトリ) のみを検索します。‘-nostdinc’ と ‘-I-’を使用することにより、インクルードファイルの検索パスを明示的に指定したディレクトリのみに限定することが可能となります。
-nostdlib リンク時に、標準のシステムライブラリとスタートアップファイルを使用しません。指定したファイルのみがリンカに渡されます。
-fno-buitin ビルトイン関数のうち、2つのアンダースコアで始まるもの以外を認識しなくなります。現在、この指定は_exit, abort, abs, alloca, cos, exit, fabs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy, strlen の関数に影響を及ぼします。
-ffreestanding フリースタンディング実行環境 (freestanding environment) 用にコンパイルを行います。これにより、‘-fno-builtin’ オプションが有効になり、また、 main に特別な条件は不要とみなします。

gccオプション

「-Wall」

「-Wall」は、一般的に問題があると思われる構文に対して警告を出します。

「-Wall」オプションは、以下のオプションを全て指定したものに等しい。

   -Wno-import
   -Wchar-subscripts
   -Wcomment
   -Wformat
   -Wno-format-y2k
   -Wno-format-extra-args
   -Wno-format-zero-length
   -Wformat-nonliteral
   -Wformat-security
   -Wformat=2
   -Wnonnull
   -Wimplicit-int
   -Wimplicit-function-declaration
   -Werror-implicit-function-declaration
   -Wimplicit
   -Wmain
   -Wmissing-braces
   -Wparentheses
   -Wsequence-point
   -Wreturn-type
   -Wswitch
   -Wswitch-default
   -Wswitch-enum
   -Wtrigraphs
   -Wunused-function
   -Wunused-label
   -Wunused-parameter
   -Wunused-variable
   -Wunused-value
   -Wunused
   -Wuninitialized
   -Wunknown-pragmas
   -Wstrict-aliasing

-W オプション

「-W」オプションは、チェックが望まれるであらう項目に対して警告を出します。



関連







スポンサード リンク