いわしの缶詰

いわしの備忘録などが詰まった缶詰です。ヨワヨワなので、温かい目で見てくれたら嬉しいです。

C言語のVScodeを使った開発環境の作り方(Windows)

はじめに

C言語の開発環境は、さまざま存在するかと思います。大まかに分けると、統合開発環境IDE)であるVisual StudioEclipseなどを使用する方法、コンパイラーであるGCCやデバッガーであるGDBを個別にインストールしてテキストエディタで作ったプログラムを実行・デバッグする方法があるみたい。最近では、PCにいろいろインストールせずにweb上でC言語を編集・実行できるサイトがあるらしい。

 

前回の記事でせっかくVS CodeとWSL2を使ったLinuxがある(Cの開発環境とかはLinux上に作る方が楽らしい)ので、WSLのLinux上にコンパイラーとデバッガーをインストールして、Windows上のVS Codeで作ったプログラムを実行できるようにする

ちなみに、コンパイラーであるGCCやデバッガーであるGDBを個別にインストールする方法は、WindowsLinuxどちらにもインストールできるので、Windows上にコンパイラーとデバッガーをインストールすれば、LinuxWindows サブシステム(WSL)を使わずにWindowsだけで環境は作れる

Windowsコンパイラーなどを入れる開発環境の作り方

code.visualstudio.com

 

目次

 

WSL2のUbuntuGCCGDBをインストール

前回、WSL2でUbuntuをインストールしたので、Windowsの検索ボックスに「Ubuntu」と入力し、検索結果に表示されたアプリを起動する

最初にUbuntuのパッケージリストであるaptを更新する

通常のユーザーの権限ではaptは利用できないので、管理者権限を取得するsudoコマンドをつかって実行する

$ sudo apt update

実行するとパスワードの入力を要求されるので、パスワードを入力する(パスワードは入力しても、表示されないので注意)

 

次に、GCCGDBをインストールする(パッケージは、build-essentialとgdb

$ sudo apt install build-essential gdb

実行すると、Do you want to continue? [Y/n]が表示されるので、yを入力してEnterキーを押す

 

インストールが終わったら、バージョンを表示させてインストールできたかどうかを確認する

$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Copyright (C) 2021 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.

$ gdb --version
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

このようなものが表示されたら、うまくインストールができている

WSL2のUbuntuにインストールしたGCCを使ってコンパイルをしてみる

vscodeの上にあるメニューからファイル>フォルダーを開く…(Open Folder…)を選択して、C言語のプログラムなどを保存するフォルダを任意の場所に新規作成し、そのフォルダを開く

フォルダの信頼設定が出てくるのでYesをクリックする

vscodeの左側にある”新しいファイル...”アイコンをクリックもしくはエクスプローラーのところで右クリックして”新しいファイル...”選択して、ファイル名を”○○.c"と名前を付ける

そのファイルを開いて、下のサンプルプログラムを入力する

そして、vscodeの上にあるメニューから ファイル>保存 もしくは Ctrl + S を押して保存する

#include <stdio.h>

int main(void)
{
        printf("Hello!\n");
        return 0;
}

vscodeの上にあるメニューから 表示>ターミナル もしくは Ctrl + @ を押してターミナルを表示させる

右下の+の横の∨ボタンをクリックし、”Ubuntu (WSL)”を起動する

このターミナルはWSLのターミナルなので、VS codeからWSLを操作することができる

上で作成した”hello.c”をVS codeのターミナルからWSLを操作してコンパイルする

※実行ファイルの名前を指定しないとき
$gcc hello.c
※実行ファイルの名前を指定するとき
$gcc -o hello.out hello.c

コンパイルされると、名前を指定してない場合は”a.out”という名前の実行ファイルが出力される

出力される実行ファイルの名前を指定することもできる

コンパイル出来たら、実行ファイルを実行する

※実行ファイルの名前を指定しないとき
$./a.out
※実行ファイルの名前を指定するとき
$./hello.out

実行すると、”Hello!”と表示される

 

WSLからWindowsファイルシステムにアクセスするときは、

/mnt/c/

のようなアドレスとなる(cドライブの場合)

 

リモート接続をしてWSL内でVS codeを実行する

さっきは、WindowsVS codeでコードを書いて、Ubuntuコマンドラインで実行していました。次は、WindowsVS codeからUbuntu側のVS code Serverにリモート接続をしてコンパイルデバッグを行うようにします。

code.visualstudio.com

VScodeの左端の拡張機能(Extensions)から”WSL"を検索して、インストールする

Ctrl+Shift+P もしくはVScodeの上にあるメニューから 表示>コマンドパレット… を押して"コマンド パレット"を表示し、WSLと入力する

次に、”WSL: Connect to WSL”を選択して、リモート接続を開始する

 

リモート接続を開始すると、右下に「WSL: ディストリビューション名」と表示される

 

リモート接続されている状態で、vscodeの左端の拡張機能(Extensions)から”C/C++ Extension Pack"を検索して、インストールする(この拡張機能は、WSL側にインストールされる)

リモート接続されている状態で、上のようにWSLのターミナルを表示させる

プログラム保存用のディレクトリを作成する

(場所は、HOME/ユーザー名/の下に作ります)

$ mkdir c_test

 

VScodeの上にあるメニューからファイル>フォルダーを開く…(Open Folder…)を選択して、先ほど作成したフォルダを開く

フォルダの信頼設定が出てくるのでYesをクリックする

 

"新しいファイル..."をクリックして、”helloworld.c”と名前をつける

新規作成したファイルを開いて、上のコードを貼り付けて保存する

 

エディタの右上隅にある再生ボタンの∨を押して、”C/C++ファイルの実行”を選択すると、システムで検出されたコンパイラのリストが表示される

gcc-11 と gcc の違いはネットを漁ってもあまり出てこなかったので、今回は”C/C++ gcc アクティブファイルのビルドとデバッグ”を選択する

(初めて実行するときだけ、コンパイラを選択するように求められる)

選択すると、”helloworld”というファイルと”.vscode”というフォルダーの中に”tasks.json”というファイルが生成される

”tasks.json”は、ビルド設定のファイルで自由にカスタムすることができる

そして、ターミナルのところに実行された結果が表示される

デバッグについては、ちょっと難しそうだったのでまた今度にしたいと思います

デバッグの基本的な使い方は、下のURLを確認してください

code.visualstudio.com

おまけ

調べている途中で見つけた日本語対応で扱いやすそうなIDEたち

Pleiades All in One - 統合開発環境 Eclipse 日本語化プロジェクト

学習用C言語開発環境 - 苦しんで覚えるC言語

 

参考

Get Started with C++ and Windows Subsystem for Linux in Visual Studio Code

Developing in the Windows Subsystem for Linux with Visual Studio Code

WSL2とVS CodeでC言語を利用してみる (Remote – WSL編) | メモ置場のブログ

【環境構築】VSCode+WSL+Remote WSLでWindows上にC/C++開発・デバッグ環境を構築する | Nov’s Research Note