Tips

【MinGW-w64と】C言語環境構築【msys2とサクラエディタで作る】前編

【MinGW-w64と】C言語環境構築【msys2とサクラエディタで作る】前編

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」をクリックします。

img_download01

 

すると次の画面に進みます。画面の中ほどのMingw-buildsをクリックします。なお、後ほど青い四角で囲んであるMsys2もダウンロードします。

img_download02

 

ダウンロードはSourceforgeのページから行うように出てきますので、リンクをクリックしてsourceforgeのページへ行きます。

img_download03

 

ダウンロードが始まりますが、いったんキャンセルします。そのままダウンロードしたファイルを実行してもインストールできるはずです。しかし、筆者はうまくいかなかったので、圧縮されているファイルをダウンロードして展開しようと思います。画面のように「MinGW-w64 – for 32 and 64 bit Windows」の部分をクリックし、MinGW-w64の概要が説明されているページに行きます。

img_download06

 

Downloadの右下に小さく表示されている「Browse All Files」をクリックします。

img_msys_inst07

 

様々なディレクトリやファイルがあります。今回は7zip形式で圧縮されている、MinGW-w64の本体のファイルをダウンロードします。今回は64bit版のwindowsへ導入するので「Toolchains targetting Win64」をクリック。

img_download08

 

続けて「Personal Builds」をクリック。

img_download09

 

「mingw-builds」をクリック

img_download10

 

次にMinGW-w64のバージョンを選択することになります。必要に応じて適切なものを選んでください。筆者は「5.3.0」を選択しました。

img_download11

 

次にスレッドモデルを選択します。

posix・・・汎用的。場合によってはかなり遅い。

win32・・・win32のネイティブなスレッド関数を使用。パフォーマンスは良いが一部サポートされていないものがある。

こちらの記事(cutlassfish https://cutlassfish.wordpress.com/)を参考にしています。

目的に応じて選択してください。今回はwindows以外のプラットフォームでも動かす(かもしれない)前提にしたいので、「threads-posix」を選択します。

img_download12

 

続けて例外機構を選択します。

sjlj・・・setjmp/longjmpの略(だと言われている)。例外を多用するとパフォーマンスが少し落ちる。32bitも64bitも両方対応。

seh・・・zero overhead exception。windows標準の構造化例外とのこと。一部の64bitのみ対応。

※これも、こちらの記事(cutlassfish https://cutlassfish.wordpress.com/)を参考にしています。

スレッドと同様の理由から「sjlj」を選択。追記(2016.03.04.):今回の環境は64bit環境なのでそれも考慮。

img_download13

 

これでようやく本体にたどり着いたので、「x86_64-5.3.0-release-posix-sjlj-rt_v4-rev0.7z」をクリックしてダウンロード。

img_download14

ということで、筆者はこちら(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となっている青い四角をクリックします。

img_download02

Msys2はGitHubからダウンロードします。GitHubへのリンクをクリックします。

img_download04

画面上部からインストーラーをダウンロードします。今回は64bit環境なので「x86_64」と書いてある方を選びます。

img_msys_inst01

 

ダウンロードができたら実行します。「次へ」をクリック。

img_msys_inst02

 

インストール先のフォルダを選択して「次へ」をクリック。

(筆者はCドライブ直下にmsys64というフォルダを作り、そこを選択しました。)

img_msys_inst03

 

ショートカットを作成します。「次へ」をクリック。

img_msys_inst04

 

インストールが始まります。

img_msys_inst05

 

終わったら「完了」をクリックします。

img_msys_inst06

 

ここまででインストールは完了しました。しかしこのままでは使い勝手が悪いので、後編でパスの設定などを行います。

To be continued… 後半はこちら


筆者のおすすめ記事
C言語(Windows環境)からMySQL #1 環境導入編(2017.08.25. 更新)
C言語練習問題一覧
C言語でBINGOを作ろうシリーズ 記事一覧

実践力が身につくC言語講座 連載リンク

競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載

アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載

パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載

Recent News

Recent Tips

Tag Search