Linux環境MSYS2でC言語のHello World!

スポンサーリンク

はじめに

プログラミングにおいて、コマンドライン環境(文字を打ち込んで操作する環境)の便利なプログラムを使うと作業の効率が上がります。

本記事では、Windowsパソコン上でLinuxを使えるようにするMSYS2を使用してC言語でのプログラミングをするための環境構築方法を紹介します。

JavaやPythonから覚える人も多いと思いますが、ものづくりを念頭に置き、Arduinoや多くの組み込み系のマイコンで使えるC言語を選択しました。

何か1つプログラミング言語がわかるようになれば、他の言語も理解しやすくなると思います。

MSYS2をインストール

以下のページからインストール用ファイルをダウンロードします。
https://msys2.github.io/
64bit版Windowsを使用している場合はmsys2-x86_64-~を、32bit版の場合はmsys2-i686-~の方を選択します。

使っているWindowsが何bit版かは、以下から調べられます。
Windowsマーク→設定(歯車マーク)→システム→バージョン情報
「システムの種類」のところに~ビットオペレーティングシステムと記載があります。

Explorerでダウンロードのフォルダを開き、右クリック→管理者として実行 を押すとインストールが始まります。

インストールが終わったら、デスクトップに起動用ショートカットを作っていきます。(以降64bit版をインストールした場合を例に説明するので、32bit版をインストールした場合はフォルダ名等が多少異なると思います。)

Exploereで C:¥msys64 を開き、msys2_shell.cmd のファイル上で右クリック→ショートカットの作成 を押します。

できたショートカットをデスクトップに移動します。(ファイルの移動方法がわからない場合は「プログラミングのための環境準備とWindowsの基本操作」を参照してください。)

デスクトップに移動した 「msys2_shell.cmd – ショートカット」のファイル上で右クリック→プロパティ を押し、リンク先に -mingw64を書き足して以下のようにしてOKを押します。
C:¥msys64¥msys2_shell.cmd -mingw64
-mingw64の前には空白が必要ですので注意してください。

「msys2_shell.cmd – ショートカット」をダブルクリックしてMSYS2を立ち上げます。以下のような黒い画面が出れば成功です。

「msys2_shell.cmd – ショートカット」の他にインストール時にデスクトップに自動的に作成されたMSYS2のショートカットがある場合は、まぎらわしいので削除して良いです。

ここからは、MSYS2に機能を足していくので、MSYS2の黒い画面に文字を打ち込んでいく作業が続きます。

以降に記載するコマンドは非常に長く、打ち間違えしやすいので、本ページのコマンドをコピーしてMSYS2に貼り付けるようにしてください。

なお、MSYS2上ではCtrl+Vが利用できませんので、右クリック→Paste、または、中央ボタン(ぐるぐる回るホイール部が中央ボタンになっていることが多いです)で貼り付けてください。

まずパッケージ管理ツールpacmanをインストールします。

なお、最初の$はプロンプトと言って、MSYS2にコマンドを入力できる状態のときに表示されるものなので$は入力不要です。

$ pacman -Sy pacman

インストールが終了して文字を入力できる状態になったら、exitを入力してMSYS2を一旦終了します。

$ exit

再度MSYS2を立ち上げて以下2つのコマンドを順に実行します。

$ pacman --needed -S bash pacman pacman-mirrors msys2-runtime
$ pacman -Su

ここで以下のような警告が表示されたら、警告文の内容(英語)にあるようにWindowの×ボタンでMSYS2を終了します。

警告: terminate MSYS2 without returning to shell and check for updates again
警告: for example close your terminal window instead of calling exit

警告が出なかった場合はexitでMSYS2を終了します。

$ exit

再度MSYS2を立ち上げて以下のコマンドを実行します。

$ pacman -S base-devel msys2-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

文字を入力できる状態になったら、以下のコマンドでgccが正しくインストールできているか確認します。

$ which gcc

下図のように /user/bin/gcc のように表示されれば成功です。

上記がうまくいかない場合、以降のC言語プログラミングを試せませんので、https://qiita.com/azk0305/items/a546da060f3ab8d6a8bfなどを参考にアンインストール、C:¥msys64の削除、再インストールを試してください。

まずはHello World!

どんなプログラミング言語を学ぶ際も初めて試すのはHello World!と相場が決まっていますので、試していきましょう。

以下がHello World!と表示してくれるC言語プログラムです。

#include <stdio.h>

void main()
{
    printf("Hello World!\n");
}

何やら難しそうに見えるかもしれませんが、徐々に説明していきますので今はわからなくて大丈夫です。

上記ブログラムをK2Editorやメモ帳などのテキストエディタでhello.cという名前で作成します。

上図のようにプログラムをコピーしてテキストエディタに貼り付け、上の方にあるメニューから、
ファイル→名前を付けて保存

そして、保存する場所の部分をクリックして、「ローカルディスク(C:)」からたどっていき、以下を保存場所にします。
C:¥msys64¥home¥user
ファイル名をhello.cにして保存ボタンを押します。

ただし、上記保存場所のuserの部分は、人によって異なると思います。MSYS2を立ち上げてpwdと打ち込むことでuserの部分が自分の環境では何になっているか、確認することができます。

この場所のことをホームディレクトリと呼びます。

ホームディレクトリは、MSYS2上では /home/user として見え、Explorer上では C:¥msys64¥home¥user となりますが、実際には同じ場所になります。

拡張子cはC言語のプログラムファイルであることを表しますので、C言語プログラムを保存する際は、常に.c付きの名前にしてください。Explorerでは以下のように表示される場所になります。
PC > ローカルディスク(C:) > msys64 > home > user
※上記フォルダは32bit版の場合は少し異なると思います。

hello.cは人間が見てわかるプログラムですが、これをコンピュータが実行可能なファイルに変換する必要があり、これをコンパイルと言います。

gccというプログラムを使用してhello.cをコンパイルします。
以下のようにMSYS2上に書き込み、Enterを押してください。

$ gcc hello.c

このように、「gcc スペース(空白) プログラムファイル名」と入力することで、コンパイルが実行され、a.exeという新しいファイルが作成されます。

このa.exeがコンピュータが実行可能なプログラムファイルです。

では、./a.exeと入力してください。すると、次の行に以下のようにHello World!と表示されると思います。

$ ./a.exe
Hello World!

うまくいきましたか?

Hello World!と表示するC言語プログラムを書いて、それをコンパイルし、実行したら確かにHello World!と表示されたということです。

これであなたもC言語プログラマーとしての第一歩を踏み出しました!

試しにプログラムのHello World!の部分を好きな内容に書き換えてみてください。それを再度コンパイルして実行すると表示される文字が変わると思います。

もしgccがうまくいかなかったら

gccによるコンパイルがうまくいかなかった場合、考えられる要因と対処方法を説明します。うまく行った場合は読み飛ばして構いません。

gccのインストールがうまくいっていない

$ gcc hello.c
bash: gcc: コマンドが見つかりません

上のように表示される場合、gccがうまくインストールできていないと思われます。
その場合、以下を実行するか、MSYS2を再インストールします。

$ pacman -S base-devel msys2-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

再インストールの場合の注意点は以下のページを参考にしてください。
https://qiita.com/azk0305/items/a546da060f3ab8d6a8bf

hello.cができていない

$ gcc hello.c
gcc: エラー: hello.c: No such file or directory
gcc: 致命的エラー: 入力ファイルがありません
コンパイルを停止しました。

上のように表示される場合、以下の場所にhello.cを保存できていないか、ファイル名を間違っている可能性があります。
C:¥msys64¥home¥user
最後のuserの部分はインストールの仕方によって別の名前になっている場合があります。


次のようにpwdコマンドを実行して/home/に続く名前を確認し、userでない場合は、その名前の場所にhello.cを保存します。下記はuser名がnameとなっている場合の例です。

$ pwd
/home/name

以下のようにlsコマンドを実行することでも正しくhello.cができているか確認することができます。

$ ls hello.c

上記のようにlsコマンドを実行しても何も表示されない、またはhello.cとは異なる名前のファイル名が表示された場合、hello.cの保存場所やファイル名を再確認してください。

Explorerで拡張子が表示されない場合は以下の記事を参考に拡張子を表示の上、ファイル名を確認してください。
プログラミングのための環境準備とWindowsの基本操作

よく使うLinuxコマンド

ここまで何度かLinuxという言葉が出てきましたが、これも何のことかわからないと思います。今はMSYS2の黒い画面のことだと思ってもらえれば良いです。

以下のようなコマンドはよく使いますので、覚えてください。

Linuxではフォルダのことをディレクトリと言いますので、以下でもディレクトリと表現します。

コマンド説明補足
lsファイルやディレクトリの存在確認をする。実行ファイルは緑色で表示されファイル名の末尾に*が付き、ディレクトリには青色で/が付くなど、種類により表示のされ方が異なります。
pwd現在のディレクトリを確認する。MSYS2実行直後にpwdを実行すると/home/userと表示されますが、これはWindows上のC:¥msys64¥home¥userに対応しています。このディレクトリのことをホームディレクトリと呼びます。
Windowsでのフォルダの区切り文字は¥に対し、Linuxでは/(スラッシュ)になることに注意してください。なお、Linuxでは通常、¥は\(バックスラッシュ)と表示されます。
catファイルの中身を表示する。ファイル内の全角文字(日本語)は正しく表示されない場合があります。
mkdir ディレクトリ名新しいディレクトリを作成する。-
rmdir ディレクトリ名ディレクトリを削除する。-
cd ディレクトリ名別のディレクトリに移動する。単にcdとすると、ホームディレクトリに移動します。
mv ① ②ファイルやディレクトリを移動する。ファイルやディレクトリの名前を変える。②がすでに存在するディレクトリ名のとき、①を②に移動します。それ以外のときは①を②の名前に変更します。
rm ファイル名ファイルを削除する。-
gcc ファイル名C言語プログラムをコンパイルする。-
exitMSYS2を終了する。-

もっと知りたい方は、以下のようなページを参考にすると良いでしょう。
Linuxコマンドリファレンス(http://www.redout.net/data/command.html

まとめ

本記事では以下の内容を説明しました。

  • WindowsパソコンにMSYS2をインストール
  • Hello World!を表示するプログラム作成
  • プログラムのコンパイルと実行

今後、プログラミングにトライしてみようかなと思っていただけたらうれしいです。

なお、私の記事以外でもプログラミングを学ぶことはできます。

以下のようなプログラミング教室もありますのでご参考まで。

子供向け:
オーダーメイド型子ども向けプログラミング・ロボット教室【LITALICOワンダー】
「Tech Kids Online Coaching」無料体験会 詳細・お申込みはこちら!

大人向け:
世界最大級のオンライン学習サイトUdemy

どれも無料体験ができます。

参考文献

タイトルとURLをコピーしました