GCC

GCC

GNUコンパイラ コレレクション (GCC) はLinux、Windows、各種BSDなど様々なOSで利用できるコンパイラ / 開発ツール群です。

GCCを高速化

GCCとは?

GNUコンパイラ コレレクション (GCC) はLinux、Windows、各種BSDなど様々なOSで利用できるコンパイラ / 開発ツール群です。サポート言語は主にCとC++ですが、Objective-C、Ada、Go、Fortran、Dにも対応しています。フリーソフトウェア財団 (FSF) によって開発され、完全フリーのソフトウェア (libre) として配布されています。

今すぐ始める
What is GCC?

歴史

1987年3月22日 (日)、Richard M. Stallman氏 (IT界隈ではRMSとも呼ばれる) はGCCを一般公開してテストを呼びかけました。それから10年の間にこのプロジェクトからEGCSコンパイラが派生。1999年4月にGCCに再統合されて、GNUプロジェクトの一部となりGNUコンパイラ コレクションと名称変更されました。

プロジェクトの管理と定期的なリリースはGCC運営委員会が行っています。2021年3月19日現在で最新バージョンは10.2です。

しくみ

GCCはコードをコンパイルし、ライブラリとの依存関係とリンクさせ、コードをアセンブリに変換して、実行ファイルを作成する一連のツールです。GCCは「個々のタスクを適切に実行できるシンプルなツールを使用する」というUNIXの設計思想に基づいており、GCC開発スイートでは個別のツールを使ってソフトウェアをコンパイルします。

ソースコード ファイルでGCCを実行すると、まずプリプロセッサを使ってヘッダーファイルをインクルードし、コメントを破棄します。次に、コードをトークン化してマクロを展開し、コンパイル時の問題を検出して、コンパイルの準備をします。コンパイラはプログラムのオブジェクトと制御フローのシンタックスツリーを作成し、それをもとにアセンブリコードを生成します。アセンブラはこのコードをシステムのバイナリ実行形式に変換します。最後にリンカーが必要に応じて外部ライブラリへの参照をインクルードします。こうして完成したプログラムはターゲット システム上で実行することができます。

無料トライアルは

こちらをクリック

ダウンロード手順

大抵のLinuxディストリビューションにはGCCがプリインストールされているか、プライマリ リポジトリに含まれているので、簡単にインストールできます。

Debian、Ubuntu、Linux MintなどのDebian系ディストリビューションでは「apt install build-essentials」、RedHat Enterprise Linux、Fedora、CentOS、Amazon LinuxなどのRedHat系ディストリビューションでは「yum group install ‘Development Tools」、Arch、ManjaroなどのArchベースのディストリビューションでは「pacman -S base-devel」を実行します。

macOSの場合はbewから「brew install gcc」を実行してGCCをインストールします。

GCCの機能

GCCには複数言語のサポート、徹底的なコード最適化、クロスプラットフォームのコンパイルなど豊富な機能が搭載されています。詳しくはこちらのブログ記事 (英語) をご覧ください。

GCCの実行コード

GCCでは次のようにシンプルなコードでコンパイルできます。下のコマンドを実行すると「hello.c」ファイルが処理され「hello」というバイナリが生成されます。
gcc hello.c -o hello

追加のパラメータを渡すこともできます。下の例では最適化パラメータが「3」に設定されているため、生成されるコードはより最適化されます。
gcc hello.c -O3 -o hello

追加のライブラリを含めることもできます。下の例では「ncurses」ライブラリが追加されています。
gcc hello.c -lncurses -o hello

複雑なコンパイルはmkefileで管理し、「make」コマンドで実行します。

WindowsでGCCを使う

WindowsでGCCを使う際のオプションは次の2つです。

1. Windows Subsystem for Linux (WSL) をインストールして好きなディストリビューションをインストールして上記の指示に従う

2. https://mingw-w64.orgからMinGW (Minimalist GNU for Windows) ディストリビューションを使用する

Linuxに近い環境でGCCを使いたい場合はWSLオプションを選択します。近年のWSLはLinuxをほぼネイティブ実行できるためワークフローにほとんど影響はありませんが、仮想環境を使用するため多少のオーバーヘッドがあります。また、グラフィカル プログラムは動作しなかったり、パフォーマンスや機能が低下することがあるので、GUIベースのソフトウェアをコンパイルする場合にはMinGW-W64の方が適しているかもしれません。

LinuxでGCCを使う

GCCはほとんどのLinuxやオープンソース ソフトウェアでコンパイルに使用される開発システム群であるGNUツールチェーンの中心的な役割を果たします。例外はあるものの、ほぼすべてのLinuxシステムにGCCが搭載されています。Linuxカーネル自体も主にGCCでコンパイルされています。LinuxカーネルとGNUツールチェーンの関係には長い歴史があり、Linuxのエコシステムは一般的にGNU/Linuxと呼ばれています。

メリット

  • GCCの最大のメリットはライセンスです。GPL (General Public License) バージョン3ライセンスなのでソフトウェアの使用・複製・改変などを自由に行うことができます。このプロジェクトはFree Software Foundationによってサポートされており、GCCには開発者、コントリビューター、サポート エコシステムからなる大きなコミュニティが存在します。
  • モジュラー デザインなのでトラブルシューティングやソースコードのメンテナンスが簡単で、新機能もすばやく導入できます。

Incredibuildとの統合

GCCは元々高速なツールですが、Virtualized Distributed Processing™ (仮想分散処理) 技術がすべてのホストを数百のコアを持つスーパーコンピューターに変えて開発をさらに高速化します。コンパイルからテスト、リリースの自動化まで、製品開発を加速することで、優れた製品をよりすばやくリリースできるようになります。

icon

まとめ

GNU/Linux、オープンソース ソフトウェア、インターネットのソフトウェアのバックボーンの多くは、GNUコンパイラ コレクション (GCC) のパワーと多様性に依存しています。

無料トライアル