言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

C++辞典

  1. トップページ
  2. C++辞典
  3. 【環境構築】C++の開発環境

【環境構築】C++の開発環境

『C++』はシステムプログラミングからゲーム・組み込み開発まで幅広く使われる高性能なプログラミング言語です。ここでは macOS・Ubuntu・Windows への g++(GCC)および clang のインストール手順と、最初の Hello World プログラムをコンパイルして実行するまでの基本的な流れを説明します。

構文

// ========================================
// g++ によるコンパイルの基本構文
// ========================================

// g++ [オプション] ソースファイル -o 出力ファイル名
g++ hello.cpp -o hello

// C++17 規格を指定してコンパイルします
g++ -std=c++17 hello.cpp -o hello

// 警告を有効にしてコンパイルします
g++ -Wall -Wextra hello.cpp -o hello

// デバッグ情報を付加してコンパイルします
g++ -g hello.cpp -o hello

// コンパイルと実行をまとめて行います(macOS / Linux)
g++ hello.cpp -o hello && ./hello

構文一覧

コンパイラオプション概要
-o ファイル名出力する実行ファイルの名前を指定します。
-std=c++17C++17 規格でコンパイルします。c++11 / c++14 / c++20 なども指定できます。
-Wallよく使われる警告を有効にします。コードの品質向上に役立てます。
-Wextra-Wall よりさらに多くの警告を有効にします。
-gデバッグ情報を実行ファイルに埋め込みます。gdb などのデバッガで使用します。
-O2最適化レベル2でコンパイルします。実行速度が向上します。
-cリンクを行わずオブジェクトファイル(.o)だけを生成します。
-I パスヘッダファイルの検索パスを追加します。
-l ライブラリ名リンクするライブラリを指定します(例: -lm で数学ライブラリ)。
--versionコンパイラのバージョンを表示します。

サンプルコード

hello.cpp
// ========================================
// hello.cpp — 最初の C++ プログラムです
// 『Steins;Gate』のキャラクターを使った
// Hello World サンプルです
// ========================================

#include <iostream>  // 標準入出力ライブラリを読み込みます
#include <string>    // string 型を使用するために読み込みます

int main() {
    // 変数に名前を格納します
    std::string labMember = "鳳凰院凶真";  // 岡部倫太郎のラボメンコードネームです

    // std::cout で文字列を標準出力します
    // std::endl で改行を出力してバッファをフラッシュします
    std::cout << "El Psy Kongroo" << std::endl;
    std::cout << "ラボメンNO.001: " << labMember << std::endl;

    // main 関数は 0 を返すと正常終了を表します
    return 0;
}
g++ -std=c++17 hello.cpp -o hello
./hello
El Psy Kongroo
ラボメンNO.001: 鳳凰院凶真

よくあるミス: C++ 規格フラグを省略して新機能がコンパイルできない

コンパイラのデフォルト規格は環境によって異なります。C++11/14/17/20 の機能(auto、スマートポインタ、std::ranges など)を使う場合は、対応する -std=c++XX フラグを明示しないとコンパイルエラーになることがあります。

// C++17 の機能を使うコードです
#include <string_view>  // C++17 以降で使えます
std::string_view sv = "El Psy Kongroo";

OK: 使用する規格に合ったフラグを明示します。

// OK:
// コンパイル時に規格を指定します
g++ -std=c++17 hello.cpp -o hello

よくあるミス: macOS で g++ が実は clang を指している

macOS では g++ コマンドが Apple の clang++ へのエイリアスになっている場合があります。GCC 固有の機能や std::ranges(一部)を使う場合は、Homebrew などで GCC を別途インストールして g++-14 のように明示的に呼び出す必要があります。

g++ --version
Apple clang version 15.0.0 (clang-1500.3.9.4)

GCC が必要な場合は Homebrew でインストールします。

brew install gcc
g++-14 -std=c++20 hello.cpp -o hello

概要

macOS では xcode-select --install を実行すると Command Line Tools 経由で g++ と clang がまとめてインストールされます。Ubuntu / Debian 系では sudo apt install -y g++ clang の1コマンドでどちらも導入できます。Windows では MinGW-w64 または WSL(Windows Subsystem for Linux)を使うのが一般的です。インストール後は g++ --version または clang++ --version でバージョンを確認します。コンパイルには g++ -std=c++17 hello.cpp -o hello のように規格を明示することが多いですが、省略した場合はコンパイラのデフォルト規格が使われます。実行ファイルの生成後は ./hello(macOS / Linux)または hello.exe(Windows)で実行できます。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。