GCCの最適化オプション

岸 哲夫

 本連載では,おもにGNUが公開・配布しているツール群の詳細を解説していく予定である.GNUのツールはコンパイラ,スクリプト言語,デバッガ,ユーティリティなど多岐にわたっている.それぞれを熟知し,使いこなすことにより,オープンソースソフトウェアの恩恵を十二分に受けることができるようになる.連載では,とくに開発系エンジニアにとって役立つソフトウェアを順番に取り上げていく予定である.

 まず最初に取り上げるのは,もっとも重要だと思われるGCCである.GCCは非常に多機能なソフトウェアなので,数回にわたって解説を行う予定である. (編集部)

 この記事を読む読者の多くはLinuxのユーザーでしょう.LinuxカーネルはLinus Torvalds氏によって1991年に公開されたものですが,その著作権は「GNU一般公有使用許諾」(GPL:The GNU General Public License)によって保護されています.

 みなさんはLinuxを何に使っているでしょうか.デスクトップOSとして,またはプログラム開発環境として,さらにはサーバとして,さまざまなプログラムを動作させていることと思います.

 Linuxはカーネルだけなので,それ単体では何もできません.ほかにシェル,コンパイラ,圧縮ツール,メール配送サーバなどをはじめとしたさまざまなプログラムが必要です.そういったソフトウェアはLinus Torvalds氏がLinuxカーネルを開発した時点で,FSF(Free Software Foundation:フリーソフトウェア財団)によって開発され,すでにこの世に存在していました.それを一般的にGNUツールと呼びます(図1).

〔図1〕GNUプロジェクト
http://www.gnu.org/home.ja.html


 もちろんその著作権はGPLによって保護されています.このようにGNUとLinuxは不可分のものであり,本来はGNU/Linuxシステムと呼ばれてしかるべきものなのです.

 Linus Torvalds氏は規定によって公開されているGNUツールのソースコードをカーネルに組み込み,現在のLinuxが完成したのです.

● GPL関して

 GNUプロジェクトが提唱するフリーソフトウェアのライセンスのことをGPLと呼びます.ソフトウェアとそれを使用するユーザーに,使用・複製・変更・再配布の自由を与えることを目的としています.

 FSFがソフトウェアにさまざまな自由を与える権利として提唱しているコンセプトである「Copyleft」,そしてそれを保証するためのライセンスがGPLです.GNUプロジェクトの成果物は,そのほとんどがGPLにより配布されています.このライセンスのおもな特徴として,以下のような点が挙げられます.

   ソフトウェアは必ずソースプログラムとともに領布,複製される.もしソースプログラムを付けずに配布する場合は,ソースプログラムを確実に入手できる手段を提供することが義務付けられる

  (1) ソフトウェアを,使用・複製・変更・配布したり,新しいオリジナルなフリーソフトウェアの一部として利用できること

  (2) 変更・改良されたソフトウェアはGPLに従って領布されること

  (3) プログラムの全部あるいは一部を用いて作られたソフトウェアはGPLに従って領布されること

  (4) 基本的に無保証であり,そのソフトウェアが原因でトラブルが生じても作者に責任はないこと

 なお,GPLの規定を少しゆるめたLGPL(The GNU Lesser General Public License)というものもあり,これは非フリーなモジュールとのリンクを認めています.

● GNUプロジェクト

 1984年にRichard Stallman氏を中心として作られたプロジェクトです.GNUとは「GNU is Not Unix」の頭文字を取った略号であり,UNIXと上位互換性のあるフリーな総合ソフトウェアシステムの名称です.本来はカーネルもGNUプロジェクトで開発されるはずでしたが,現在はLinuxがあるので,それが使われています.

 GNUプロジェクトに関しては有名なので,いまさら詳しく説明することもないでしょう.しかし,たとえばgccを使うことはできても,十分に使いこなしている人は少数だと思います.

 たとえばgccのコマンドオプションについての情報はあっても,それを使うとどうなるのか,またどのようなプログラムができるかという情報はネット上でさえも皆無に等しい状態です.英語で書かれた海外の情報については深く調査していませんが,それを見つけても翻訳しながら使うのはなかなか面倒なことです.

 今回から始めるこの連載では,GNUツールに関して徹底的に突っ込んで解説していきます.

 なお,GNUプロジェクトについてはRichard Stallman氏の著作である書籍『オープンソース』に詳しく書かれています.GNUの「フリーウェア」に関する考え方をそこから抜粋します.

  ・いかなる目的でもそのプログラムを実行する自由がある

  ・自分のニーズに合わせてそのプログラムを修正する自由がある(この自由を実際に活用するため,ソースコードを入手できるようでなければならない.ソースコードなしにプログラムに変更を加えるのは極めて困難なことだから)

  ・その複製を無料でも有料でも再配布する自由がある

  ・コミュニティがあなたの改善作業によって恩恵が受けられるよう,修正したプログラムを配付する自由がある

 誤解されていることは,「フリー」は自由のことをいうのであって,値段のことではないのです.

 図2に示すWebページにGNUプロジェクトに関する文章があるので,興味のある読者は読んでみてください.

〔図2〕GNU プロジェクトに関する詳細
http://www.gnu.org/gnu/thegnuproject.html

 GNUツールの中にはたくさんの言語環境やツールがありますが,たぶんもっともよく使われていると思われるGCCに関して解説します.

記事内インデックス    連載インデックスはこちら   Interfaceのトップ
GCCについて
GCCを手動で最適化してみる
最適化とは
最適化のオプション
オプション実行のカスタマイズ

Copyright 2002 岸 哲夫

Copyright 1997-2017 CQ Publishing Co.,Ltd.