Chromebookで環境構築:C言語
はじめに
本記事では、Chromebook で C 言語の開発環境を作る過程を説明します。VSCode の拡張機能を使いつつ、なるべく手軽に導入できる方向を目指します。
前提となる条件
本記事は、Chromebook に Linux 開発環境が構築済みであることが前提となります。また Linux 側で VSCode がインストールされた状態で、日本語化や GitHub との連携といった諸々の設定が済んだ状態を想定し、話を進めていきます。
なお本記事は 2024年 11月に作成したものです。ChromeOS のバージョンは 131.0.6778.96
(Official Build)(64 ビット)、VSCode のバージョンは 1.95.3
となります。
導入手順
ここからは C 言語の開発環境を作っていく手順を説明していきます。ここで使っているスクリーンショットは、Linux 開発環境を新規に作り最低限の設定のみ整えた状態で撮ったものとなります。
環境構築の手順としては、下記のような流れとなります。
- 拡張機能のインストール
- コンパイラのインストール
拡張機能のインストール
拡張機能タブの検索欄に c/c++
と入力すると、結果一覧に Microsoft の C/C++ 及び C/C++ Extension Packが見つかります。拡張パック側で「インストール」ボタンを押すと、 C/C++ 含め必要となる諸々の拡張機能とセットでインストールされます。
C/C++
C/C++ Extension Pack
環境構築の手順画面
インストールが完了すると、下図の画面が表示されます。C++ の開発環境を構築する手順や確認方法が紹介されており、「まず最初に GCC コンパイラ をインストールしてください」と促されています。
上記画像のテキスト版
C++環境のセットアップ
C++ 拡張機能は C++ コンパイラとの組み合わせで動作します。下のボタンをクリックして、このマシンにインストールされているコンパイラの内 1 つを選択してくださいC++ ファイルの作成
開く または 作成 C++ ファイル。"helloworld.cpp" などの ".cpp" 拡張子を使用して保存してください。お使いの C++ ファイルを実行してデバッグする
C++ ファイルを開いてエディターの右上隅にある「再生」ボタンをクリックするか、ファイル上で F5 キーを押します。デバッガーで実行するには、「g++ - アクティブファイルのビルドとデバッグ」を選択します。デバッグのカスタマイズ
デバッグ構成をカスタマイズするには、アクティビティバーでエクスプローラーを選択肢、C++ ファイルを含むフォルダーを開きます。C++ ファイルを開き、「再生」ボタンの右側にある「デバッグ構成の追加」を選択します。新しいデバッグ構成は、プロジェクトの launch.json ファイルに保存されます。Linux で C++ コンパイラをインストールする
Linux に C++ の開発を行う場合は、GCC コンパイラのインストールをお勧めします。GCC のインストールは簡単で、以下の 3 つの手順に従うだけです。ターミナル ウィンドウで次のコマンドを実行すると、Ubuntu のパッケージ リストが更新されます。Linux ディストリビューションが以前のバージョンである場合は、新しいパッケージのインストールに支障をきたす場合があります。
sudo apt update
以下のコマンドを使用して、GNU コンパイラ ツールと GDB デバッガーをインストールします。
sudo apt install build-essential gdb
次のコマンドを実行して、GCC がインストールされていることを確認します。著作権に関するメッセージと、使用している GCC のバージョンに関する情報が表示されます。
gcc --version
『Walkthrough: C/C++』より抜粋
コンパイラ未インストール時の挙動
現段階(拡張機能のインストール)では、まだ GCC コンパイラがインストールされていない状態です。この時点で C 言語のファイルを作成した場合、どうなるかを試してみます。
まずは拡張子 .c
でファイルを作成し、コードを書いていきます。下記にあるコードは「西暦を入力要求して和暦に変換して返す、この一連の流れを 0
が入力されるまで続ける」ことを目的としたものとなります。
/**
* 本コードは『Cの絵本 第二版』(著者:株式会社アンク)にある
* サンプルプログラム(P99) をベースにしたものとなります。
*/
#include <stdio.h>
#include <string.h>
int convWareki(int, char *, int *); // プロトタイプ宣言
int main(void){
int year = -1;
int wareki = 0;
char nengou[16];
printf("和暦変換を行います、終了するには 0 を入力してください。\n");
while(year != 0){
printf("西暦を入力してください(1868年以降):");
scanf("%d", &year);
// 関数が適切に処理できた場合、計算結果を出力
if(convWareki(year, nengou, &wareki) == 0){
printf("西暦 : %d年 -> %s : %d年\n", year, nengou, wareki);
}
}
return 0;
}
int convWareki(int year, char *nengou, int *wakeki){
const int meiji = 1868;
const int taisyo = 1912;
const int syowa = 1926;
const int heisei = 1989;
const int reiwa = 2019;
if(year < meiji){
return 1; // 明治以前
} else if(year < taisyo) {
strcpy(nengou, "明治");
*wakeki = year - meiji + 1;
} else if(year < syowa){
strcpy(nengou, "大正");
*wakeki = year - taisyo + 1;
} else if(year < heisei){
strcpy(nengou, "昭和");
*wakeki = year - syowa + 1;
} else if(year < reiwa){
strcpy(nengou, "平成");
*wakeki = year - heisei + 1;
} else {
strcpy(nengou, "令和");
*wakeki = year - reiwa + 1;
}
return 0;
}
下図はコードを作成した段階です。下記の問題が生じていることがわかります。
-
include
文でエラーを出している - 画面右下に、黄色で注意を表す「⚠」マーク(インテリセンス機能の問題)が出ている
include文のエラー
このコードでは最初の方で、入出力や文字列操作のために #include <stdio.h>
, #include <string.h>
で標準 C ライブラリを参照するようにしています。上図は その include
文の箇所でエラーを出している状態となります。
エラー内容を見てみると、下記のようにインテリセンス構成で問題がおきていることがわかります。
#include
エラーが検出されました。includePath
を更新してください。この翻訳単位 (/home/username/sample-c/sample.c
) では、波線が無効になっています。C/C++(1696)ソース ファイルを開けません "stdio.h". システム ヘッダーを見つけるには、'IntelliSense 構成の選択...' コマンドを実行してください。C/C++(1696)
ソース ファイルを開けません "string.h". システム ヘッダーを見つけるには、'IntelliSense 構成の選択...' コマンドを実行してください。C/C++(1696)
インテリセンス機能の問題
また上図では右下に注意マークを表示しています。これはインテリセンス構成の問題(コンパイラがないので、どのようにインテリセンス構成をすればいいか不明)を表しています。試しにクリックすると、下図のように構成方法を尋ねられます。
コンパイラのインストール
C 言語での開発にはコンパイラが必要であることが確認できました。ここからは環境構築の手順画面で提示された流れに沿って、コンパイラをインストールします。
必要なパッケージをインストールには apt install
を使います。
username@penguin:~$ sudo apt install build-essential gdb
gbd
(GNU Debugger)は C/C++ 用のソースコードのデバッガーです。build-essential
は開発に必要となる諸ツールがまとまったもので、例えば下表のパッケージが含まれています。
パッケージ名 | 説明 |
---|---|
gcc |
GNU C コンパイラ |
g++ |
GNU C++ コンパイラ |
cpp |
GNU C プリプロセッサ |
make |
コンパイルを制御するユーティリティ |
dpkg-dev |
Debian パッケージ開発ツール |
インストールが完了すれば、C 言語の開発環境は整いました。
インストールの確認
環境が整ったので、ここでは確認をしていきます。
ターミナルでコンパイラを確認
まずはターミナルを起動し、コンパイラ gcc
が存在しているかを確認してみます。
username@penguin:~$ gcc --version
gcc (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
プログラムの実行
次に作成済みの C 言語ファイルを選択し、「C/C++ ファイルの実行」を行ってみます。すると下図のように使用するコンパイラを聞かれるので、gcc
を選択します。
選択すると、コンパイル等をスキャンしつつビルドが進んでいきます。下図ではビルドが完了し、同フォルダ内にコンパイルされたプログラムが生成されていることが確認できます。
デバッグを試してみたのが下図となります。デバッガが起動しコードが問題なく動作していることが確認できます。
まとめ
本記事では Chromebook 上に立てた Linux 開発環境で、VSCode の拡張機能を使いつつ C 言語の開発環境を構築する流れについて説明しました。
参考文献
本記事で扱ったコードは、下記を参考にしています。
Discussion