MinGW-w64とmsys2とサクラエディタで作る、C言語開発環境 前編
C言語の概要
C言語の特徴
64bitのWindowsにC言語の開発環境を導入しようと思ったらいろいろ設定で戸惑ったので忘備録代わりにメモ。「ちょっw今どきC言語ワラ」とか言わない←そもそも今どきそんな言い方しない
C言語はjavaとは違い、動作が環境に強く依存します。また、関数ライブラリの中身が環境や他の関数ライブラリに依存していることもあります。そのため、作ったPCでは動くけれど他のPCでは全く動かない、動いたけれど動作がおかしい、といったことも普通に起こりえます。開発で使用するOSと実際に動かす環境のOSが違えば、動作が異なる可能性が高いです。同じOS同士でもマシンの仕様が異なれば挙動が異なる可能性が出てきます。さらに言えば、同じマシンでもコンパイラが変われば動作が異なることもあります。この辺りは一度組めばどんな環境でも動く(Write once, run anywhereである) javaと異なります。要注意です。
※今回は環境の導入を目的としていますので、ざっくりとした説明になっています。C言語の内部的な挙動などについて、詳しく知りたい方や厳密に知りたい方は別途調べましょう。
お待たせしました。後編を書きました。(2016.03.21.)
C言語からMySQLを利用したい人はこちらの記事もおすすめ→C言語(Windows環境)からMySQL #1 環境導入編(2017.08.25. 更新)
プログラミングの流れ
C言語もいわゆるコンパイル言語ですので、「ソース作成」ー>「コンパイル」ー>「実行」という流れでプログラムを実行します。C言語をコンパイルする「gcc」というコマンドは、主要なLinuxやmacでは使えるようになっています。しかし、Windowsではそのままでは利用できません。WindowsでC言語を利用した開発を行いたい場合、CygwinやMinGWなどのC言語の開発環境を導入することになります。
前述のとおり、実行時の挙動は実行時の環境に強く依存します。そのため、C言語を利用してプログラムを作成する場合はどのプラットフォームの上でプログラムを動かすのかよく考えたうえで環境を準備しなければいけません。また、無償で公開するのか有償で開発するのか、ライセンスはどうなっているのかといった点も考慮する必要があります。
開発環境の導入
開発環境として今回はMinGW-w64を利用します。このMinGW-w64はMinGWを基にして※作成されており、64bitに対応しています。
※基にはしていますが、別のプロジェクト?扱いということのようです。
導入環境
今回の導入環境はこちら。
PC:MacBook Pro early 2011 15inch
OS:Windows 8.1 64bit (Boot Campを使用) なんでWindows?とは言わないお約束。
CPU:Intel core i7-2635QM
コンパイラ:MinGW-w64(posix, sjlj)
ツール:msys2
エディタ:サクラエディタ
エディタはお好みのものを使用していただいて構いません。今回はサクラエディタを使用します。(なお、サクラエディタについては導入済とします。)
MinGW-w64
まず、コンパイラのMinGW-w64をインストールします。こちらのページ(http://mingw-w64.org/doku.php)がMinGW w64のページになります。画面上部の「Downloads」をクリックします。
すると次の画面に進みます。画面の中ほどのMingw-buildsをクリックします。なお、後ほど青い四角で囲んであるMsys2もダウンロードします。
ダウンロードはSourceforgeのページから行うように出てきますので、リンクをクリックしてsourceforgeのページへ行きます。
ダウンロードが始まりますが、いったんキャンセルします。そのままダウンロードしたファイルを実行してもインストールできるはずです。しかし、筆者はうまくいかなかったので、圧縮されているファイルをダウンロードして展開しようと思います。画面のように「MinGW-w64 – for 32 and 64 bit Windows」の部分をクリックし、MinGW-w64の概要が説明されているページに行きます。
Downloadの右下に小さく表示されている「Browse All Files」をクリックします。
様々なディレクトリやファイルがあります。今回は7zip形式で圧縮されている、MinGW-w64の本体のファイルをダウンロードします。今回は64bit版のwindowsへ導入するので「Toolchains targetting Win64」をクリック。
続けて「Personal Builds」をクリック。
「mingw-builds」をクリック
次にMinGW-w64のバージョンを選択することになります。必要に応じて適切なものを選んでください。筆者は「5.3.0」を選択しました。
次にスレッドモデルを選択します。
posix・・・汎用的。場合によってはかなり遅い。
win32・・・win32のネイティブなスレッド関数を使用。パフォーマンスは良いが一部サポートされていないものがある。
※こちらの記事(cutlassfish https://cutlassfish.wordpress.com/)を参考にしています。
目的に応じて選択してください。今回はwindows以外のプラットフォームでも動かす(かもしれない)前提にしたいので、「threads-posix」を選択します。
続けて例外機構を選択します。
sjlj・・・setjmp/longjmpの略(だと言われている)。例外を多用するとパフォーマンスが少し落ちる。32bitも64bitも両方対応。
seh・・・zero overhead exception。windows標準の構造化例外とのこと。一部の64bitのみ対応。
※これも、こちらの記事(cutlassfish https://cutlassfish.wordpress.com/)を参考にしています。
スレッドと同様の理由から「sjlj」を選択。追記(2016.03.04.):今回の環境は64bit環境なのでそれも考慮。
これでようやく本体にたどり着いたので、「x86_64-5.3.0-release-posix-sjlj-rt_v4-rev0.7z」をクリックしてダウンロード。
ということで、筆者はこちら(posix, sjlj)のものをダウンロードしました。(URLは長いので下記参照。)
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/5.3.0/threads-posix/sjlj/
ダウンロードが終了したら、7zipなどの7z形式を解凍できる解凍ソフトで解凍しましょう。筆者はCドライブ直下にmingw64というフォルダを作り、そこに展開しました。
Msys2
次に、msys2をダウンロード、インストールします。
先ほどの画面でMsys2となっている青い四角をクリックします。
Msys2はGitHubからダウンロードします。GitHubへのリンクをクリックします。
画面上部からインストーラーをダウンロードします。今回は64bit環境なので「x86_64」と書いてある方を選びます。
ダウンロードができたら実行します。「次へ」をクリック。
インストール先のフォルダを選択して「次へ」をクリック。
(筆者はCドライブ直下にmsys64というフォルダを作り、そこを選択しました。)
ショートカットを作成します。「次へ」をクリック。
インストールが始まります。
終わったら「完了」をクリックします。
ここまででインストールは完了しました。しかしこのままでは使い勝手が悪いので、後編でパスの設定などを行います。
筆者のおすすめ記事
C言語(Windows環境)からMySQL #1 環境導入編(2017.08.25. 更新)
C言語練習問題一覧
C言語でBINGOを作ろうシリーズ 記事一覧
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載