【初心者向け解説】C言語 開発環境構築(C++も対応)

[記事内には広告が含まれています]

こんにちは、現役エンジニアの inno_tech です。

Linux上でC言語の開発環境を構築する方法をお探しでしょうか?

本記事ではLinux上でC言語の開発環境を構築し、MakeFileでビルドするまでの手順をまとめています。


MakeFileのテンプレートも用意したので、こちらの記事を参考にC言語の開発を始めてみてください。

なお、Linux(Ubuntu)の環境構築方法は、こちらの記事で解説しています。仮想環境を使えばWindows上に用意することも可能です。

あわせて読みたい
【初心者はこれを見ればOK】Ubuntu 20.04 LTSのインストール手順を解説 Ubuntuのインストール方法を今回は、Ubuntu20.04LTS のインストール手順を解説していきます。 この記事を見ながら作業するだけで初心者でもUbuntu 20.04LTSを簡単にイン...

※本記事は、Ubuntu 20.04LTSの場合を例に説明しています。

もくじ

コンパイラを入手

まずはターミナルから以下のコマンドを入力し、GNU C/C++コンパイラ(gcc/g++)を入手しましょう。
インストール完了後は、gcc --version で正しく機能するかを確認します。

# update
sudo apt update

# GNU c/c++コンパイラのインストール
sudo apt install -y build-essential manpages-dev

# インストール確認
gcc --version

当方の実行結果は下の画像のような結果でした。
コマンドがエラーでなければ、バージョンは異なっていても問題なくインストールできています。

gcc バージョン確認結果
gcc バージョン確認結果

エディターを入手

プログラミングをするためのエディターを準備します。
テキストエディターであれば何でもよいのですが、当サイトでは Visual Studio Code(以下、VS Code) を使用します。

Visual Studio Codeのインストール方法こちらの記事ご覧ください。

あわせて読みたい
【速習】Visual Studio Code インストール方法まとめ(Ubuntu 20.04LTS) Visual Studio Code(通称VSCode) のインストール方法をお探しでしょうか? 本記事では、VSCodeのインストール方法を詳しくまとめています。コマンドライン、GUIの両方に...

すでにエディターがある方は次へ進んでください。

初めてのプログラミング

ファイル構成

まずは作成するプログラムのファイル構成を説明します。
最終的には、下の画像のような構成になります。

サンプルプロジェクト | ファイル構成

include ディレクトリ

ヘッダーファイル(.h) を保存するディレクトリです。
今回は、test_func.h を用意しました。

src ディレクトリ

ソースファイル(.c) を保存するディレクトリです。
今回は、main.ctest_func.c の2つを用意しました。

Makefile

プログラムをビルド(コンパイル)するためのルールを記述するためのファイルです。
gccコマンドを使用することも可能ですが、プロジェクトが大きくなってくるとMakefileを使う必要性が出てきます。

早いうちにMakefile慣れしたほうが良いので、今回はMakefileを使った方法で説明します。

コーディング

まずは test_func.h test_func.cを作成します。
このファイル内には“合計値”を返す関数sum() を定義しました。

#include <stdio.h>

/* 合計値を返す */
int sum(int a, int b);
#include "test_func.h"

/**
* @brief     合計値を返す
* @return    int [合計値]
*/
int sum(int a, int b)
{
    return (a+b);
}

続いて、main.c を作成します。
main関数からプログラムがスタートし、sum() を呼び出した後、結果を表示するプログラムです。

#include <stdio.h>
#include "test_func.h"

/**
* @brief     main関数
* @return    int [0: 成功, -1:失敗]
*/
int main(void)
{
    int a = 10;
    int b = 5;

    int result = sum(a, b);

    printf("%d + %d = result: %d\n", a, b, result );
    return 0;
}

Makefile作成

続いて Makefile を作成します。
srcディレクトリ内の拡張子[.c] のファイルをコンパイルするMakefileを用意しました。

細かい中身の理解は置いておいて、まずはこれをコピペしましょう。

# directory設定
SRC_DIR = src
INCLUDE_DIR = include
OBJ_DIR = obj
DBG_DIR = debug
BIN_DIR = bin

# ソースファイル
## IGNORE_SRCで指定したファイル以外の[xxx.c]をコンパイル
IGNORE_SRC = $(SRC_DIR)/ignore_file.c
SRCS = $(filter-out $(IGNORE),$(wildcard $(SRC_DIR)/*.c))
OBJS = $(subst $(SRC_DIR),$(OBJ_DIR),$(SRCS:.c=.o))
OBJS_DEBUG = $(subst $(SRC_DIR),$(DBG_DIR),$(SRCS:.c=.o))

# 出力ファイル名
TARGET_NAME = main.out
TARGET = $(BIN_DIR)/$(TARGET_NAME)
TARGET_DEBUG = $(DBG_DIR)/$(TARGET_NAME)

# コンパイラ設定
## gcc or g++
CC = gcc

## コンパイルフラグ
CFLAGS =  -Wall -I$(INCLUDE_DIR)
DBGCFLAGS = -g -Wall -I$(INCLUDE_DIR)

# default rule
default: makedir all foot_print

# non-phony targets
## release ビルド
$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $(OBJS) 

$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -c -o $@ $<

## debug ビルド
$(TARGET_DEBUG): $(OBJS_DEBUG)
	$(CC) $(DBGCFLAGS) -o $@ $(OBJS_DEBUG)

$(DBG_DIR)/%.o: $(SRC_DIR)/%.c
	$(CC) $(DBGCFLAGS) -c -o $@ $<

# 設定の表示 
foot_print: 
  @echo "*** Finish make ***" 

# phony rules 
# releaseビルド 
.PHONY: all 
all: $(TARGET) 

# debugビルド 
.PHONY: debug 
debug: makedir $(TARGET_DEBUG) foot_print 

# ディレクトリ作成 
.PHONY: makedir 
makedir: 
  @mkdir -p $(BIN_DIR) $(OBJ_DIR) $(DBG_DIR) 

# clean .PHONY: clean 
clean: 
  rm -f $(OBJS) $(OBJ_DEBUG) $(TARGET) $(TARGET_DEBUG)

ビルド & 実行

ファイルの準備ができたら、makeコマンドでビルドします。

# Makefileの置いてあるディレクトリ(プロジェクトのルート)に移動
cd [project_dir]

# ビルド(Releaseモードの場合)
make

# ビルド(debugモードの場合)
make debug

ビルドが成功すると、下の画像のようなファイルが生成されます。

サンプルプロジェクト | make実行結果
サンプルプロジェクト | make実行結果

binディレクトリ配下に実行プログラム「main.out」があるので、早速ターミナルから実行してみます。
(debugモードでビルドした場合は、debug/main.out が実行ファイルとなります。)

# 実行
./bin/main.out

# 実行結果
# 10 + 5 = result: 15
  • C++の場合は、Makefileのgccの部分をg++に変更することで、C++コンパイラに切り替えが可能です。

以上で、C言語のプログラムをコンパイル・実行ができる開発環境が整いました。

さいごに

今回は、Linux上でC言語の開発環境構築方法 と MakeFileを使ったビルド方法を説明しました。

さらにプログラムをデバッグする方法を知りたい方はこちらの記事に参考にしてください。

あわせて読みたい
【初心者向けに解説】Visual Studio CodeでC言語/C++のデバッグ方法 無料のエディタのVisual Studio Code(VS Code)ですが、実はデバッグ機能があることをご存じでしょうか? 今回はVisual Studio Codeを使用してC言語(C++)でデバッグ実行...

また、VSCode上でビルドを自動化するテクニックもこちらにまとめているので参考にして下さい。

あわせて読みたい
【初心者でも分かる】VSCodeのtasks.jsonでタスク自動化する方法を解説 Visual Studio Code(以下、VSCode) では、所定のタスクを自動実行する機能があることをご存じでしょうか?うまく使いこなせば、ビルドやデプロイといった決まった作業を...

ちなみに、C言語の学習には、こちらの参考書がおすすめです。

また、読みやすいコードを書くためにはこちらの書籍も読んでおくとよいでしょう。

いかがだったでしょうか。
ほかにも役立つ情報が他のページにもあるかもしれません。
ご覧になるかはあなた次第です!

この記事がイイねと思ったら、Twitterフォロー か  にほんブログ村のどちらかしてくれたら嬉しいよ!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント / ご要望

コメントする

goto
もくじ
閉じる