1
Help us understand the problem. What are the problem?

posted at

updated at

C言語開発環境をDocker+VS Codeで構築する

環境

  • Windows 11 WSL2 Debian bullseye
  • Docker version 20.10.11
  • VS Codeバージョン: 1.66.2

VS CodeにはRemote - Containers 拡張機能をインストールしておきます。ほかは必要ありません。

手順

DockerでC言語を実行

まずDockerfileを用意します。

Dockerfile
FROM debian:bullseye-slim
WORKDIR /app

RUN apt-get update && apt-get install -y \
    git \
    gcc \
    gdb \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

CMD /bin/sh -c "echo '準備完了' && sleep infinity"

apt-getはお好みでbuild-essentialで必要なものをまとめて入れてもいいと思います。

適当なプログラムを記述します。

main.c
# include <stdio.h>

int main()
{
  printf("Hello, world.\n");

  return 0;
}

Dockerでコンテナをビルドして、実行してみます。

$ docker build . -t myclang
$ docker run --name myclang --interactive --tty --rm --volume $(pwd):/app myclang bash

コンテナ内で、gccコマンドでプログラムをコンパイルして実行できます。

# gcc main.c -o main
# ./main

Hello, world.と表示されたら成功です。

VS CodeでC言語の開発

Dockerコンテナが実行中の間に、VS Codeを起動して、コマンドパレットを起動(Ctrl+Shift+P)して、>Remote-Containers: Attach to Running Container...を実行すると、VS Codeを起動中のコンテナにアタッチできます。

C/C++ Extension Pack拡張機能をコンテナ内にインストールします。.vscode/extensions.jsonをセットしておけば再度コンテナをビルドした時も推奨の拡張機能として表示されます。

.vscode/extensions.json
{
  "recommendations": [
    "ms-vscode.cpptools-extension-pack"
  ]
}

VS Codeのコマンドパレットから>View: Show 実行とデバッグを実行し、サイドパネルから「実行とデバッグ」→C++ (GDB/LLDB)C/C++: gcc-10で、デバッグできます。ブレークポイントを貼ったりできます。

image.png

今回構築したプロジェクトのソースコードはGitHubにあります。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?