Gcc

提供: MonoBook
ナビゲーションに移動 検索に移動

gcc(読み:じーしーしー、語源:the GNU Compiler Collection)とは、超便利なC言語C++などのコンパイラが詰まった夢の箱である。 Adaとか他の言語コンパイルできるかもしれません。

紛争

gccのライセンスGPL v2からGPL v3が変更になったことにBSD原理主義者たちは激怒し「GPL撲滅!gcc撲滅!」を掲げclangの開発を始めた。 BSD原理主義およびclang邪悪なBSDの後ろ盾もあり急激に勢力を強めている。 コンパイラ地域での新たな紛争はオープンソース経済に混乱をあたえると見られ世界的に懸念されてる。

入手方法

Windows

C言語・C++のエディタであるDev-C++というソフトをダウンロードすると、 (コンパイラ付きのものを選べば)gccがついてきます。
Dev-C++はhttp://orwelldevcpp.blogspot.jp/からダウンロードできます。

コンパイラ単体は、Sourceforgeからもダウンロードできます。 しかし、大量のファイルのダウンロード・解凍がめんどくさいので、上のソフトをおすすめします。

公式サイト→バージョン名→our mirror sites→左にJapanと書いてある項目→ releases→バージョン→(バージョン).tar.gzとたどってもダウンロードできると思いきや、 これはソースコードしか入っていないようです。気をつけましょう。

Linux

運が悪くなければ、多分初期状態で入っています。 入っていなければ、ググってください。(適当)

Mac

未稿

使い方

gccはC言語のソースコードをコンパイルするコマンドです。 C++の場合は、gccと書いてあるところをg++と読み替えてください。

基本

$ gcc -o 出力ファイル名 入力ファイル名

というコマンドで、とりあえずコンパイルできます。

最適化

$ gcc -O2 -o 出力ファイル名 入力ファイル名

のように-O2を付けると、最適化してくれるはずです。でも、たまに誤動作するバイナリができるので注意が必要かもしれません。

デバッグ

$gcc -g3 -o 出力ファイル名 入力ファイル名

のように-g3を付けると、デバッグ用の情報がバイナリに付加されます。

変な表現のチェック

$gcc -Wall -Wextra -o 出力ファイル名 入力ファイル名

のように-Wall -Wextraを付けると、最大限(要出典)警告してくれるようになります。
scanfが警告されてうざい時は、-Wno-unused-resultを付けるといい感じになりそうです。
(もともと警告されない環境の時は、これを付けるとエラーになることがあります)

定数倍高速化

$gcc -fopenmp -o 出力ファイル名 入力ファイル名

のように-fopenmpを付け、ソースコード内のたくさん回るfor文の前に

#ifdef _OPENMP
#pragma omp parallel for
#endif

というおまじないを書くと、実行時のCPU使用率が上がる代わりに実行が早くなる場合があります。
ただし、元のソースコードによっては、逆に遅くなったり動作がおかしくなったりします。