開発環境

まず、WindowsをUnix環境に変えるためにすること。

LinuxとUnix

LinuxとはPOSIXに準拠(Unixと同義)したカーネル部分の名称のこと。

OSとしてのUnixとLinuxは全く別物だが、POSIX(OS実装に共通のAPIを定めた規格)に準拠しているという点は同じ。

このカーネルとシェルやターミナルを含む色々なソフトウェアを組み合わせたものがUbuntu等のLinuxディストリビューション。

カーネル、シェル、ターミナル

OSの中核部分(ファイル管理、入出力など)がカーネル、これを囲うのがシェル(カーネルとの間のインターフェイス)で、これがターミナルにてコマンドラインからの入力(ls等)を介してカーネルに0と1の機械語で伝える。

bash、zsh、cmd(兼ターミナル)はシェルである。シェルを変えればUnixのコマンドも使用することができるのでlinux、mac共通でコマンドを使用することができる。変えないでcmd.exeを使うとWindows専用コマンドを覚え無くてはならない。

ターミナル(端末エミュレータ、コンソール)は一番外側、コマンドを入力する黒い画面のこと。これを入れ替えるとフォントや背景・透過等のいわゆる見た目を変えることができる。 Puttyのターミナル部分を独立させたmintty、ConEmu、Cmder他がある。

ターミナル行頭の$部分はプロンプト。ターミナルにてプロンプトが表示されている時にコマンドを入力することができる。

MSYS2/MinGW

MinGW(Minimalist GNU for Windows、GNUはUnixではないOS)は、フリーのコンパイラであるGCCをWindowsアプリの開発のため利用できるようにしたもの。つまりは、Microsoft visual C++のようなコンパイラと同じ。

gccはC言語よ呼び名で、C++ではg++コンパイラを使うが全く同じものである。($ g++ sample.cpp)

MSYS(Minimal System)はコンパイラ以外のシェルなどの環境を提供するパッケージで、MinGWとセットで提供されている。

OSの64bit化に伴い、MinGW/MSYSの後継である、Mingw-w64/MSYS2の組み合わせが最近は使用されている。(64Bit→x86_64、32Bit→i686です)

MinGW/MSYSがMinGW-getのインストーラーでMSYSを含む目的のパッケージをインストールするのに対して、Mingw-w64/MSYS2はMSYS2のインストーラー(MSYS2)でMinGWもインストールされる。だだし、この方法でインストールするとシェルを起動するexeファイルが "MSYS2 Shell"、"MinGW-w64 Win64 Shell"、"MinGW-w64 Win32 Shell" の3つでてくる。ちなみにシェルはbash、ターミナルはminttyが初期に入ってる。

これとは別に、MinGW単体のインストーラー(MinGW-w64 - for 32 and 64 bit Windows)でインストールした場合は、MSYS2ももちろん別にインストールする。MSYS2 Shellを使用するが、MSYS2の中のMinGWを使うならMinGW-w64 Win64 Shellを使うことになる。

ディレクトリ(いわゆるフォルダ)

mintty初期設定でのホームディレクトリ(/home/ユーザ名)は、msys\home\以下。$HOMEを探すコマンドは、$ echo $HOME。

「./」は同階層いわゆるカレントディレクトリ、「../」は前の階層、「/は下の階層」、「~/」の「~:チルダ」はホームの意味。

~/. はホームディレクトリにある隠しファイル、もしくは隠しディレクトリ。.ファイル名は隠しファイルを意味する。

1つ上のディレクトリへの移動は、$ cd..。現在のディレクトリを知りたい場合、$pwd( print working directory)。

パスの設定

パスの設定。binはバイナリの略。パスを通さないとその部分に書き込んだりできない。

単体でインストールしたMinGW-w64を利用するなら、システム→環境変数でPATHで"C:\MinGW/bin;"を追加しておく。最後のセミコロンは続けて書くときの区切り。

MSYS2の中のを使用するなら、mingw32_shell.batから実行することでmingw32パッケージを、mingw64_shell.batから実行することでmingw64パッケージのbinディレクトリへのパスが設定されます。msys2_shell.batでは/usr/local/bin, /usr/bin, /binのみへのパスが張られます。

最初mingw32やmingw64フォルダはないのだが、各種パッケージをインストールすると作成され、その中のbinフォルダに格納される。

mingw32/64.batで起動すると、mingwとmsys2の両方のbinaryにパスが通され、mingwの方が先に登録されているので優先されます 詳しいパスは/etc/profile内に書かれており、この中に書かれている通りwindowsのパスも取り込む。

インストール

MinGW/MSYSのようなWindowsにPOSIX環境を提供するものには、CygwinやGit for Windowsというのもある。GygwinからMinGWを使用することもできる。Git for windowsはMSYS2+α(αはGitコマンド)とのこと。

てなわけで、MSYS2をインストールして、mingw64_shell.batを開いて、このターミナル(mintty)の外観を、適当にいじり(textLocaleをja_JPに、Character set :UTF-8他)、そのあとはアップデートなど。

  • コアのアップデートは、$ update-core
  • パッケージマネージャーのpacman(Arch linuxのパッケージ管理ツール)が入っているので、これを使って他のパッケージを入れたり、アップデートしたりできる。
  • $ pacman -Syでrepositoryのデータベースを同期。
  • $ pacman -Suでパッケージのアップデート。続けて、$ pacman -Suyでもおk。終わったら再起動。
  • $ pacman -S base-devel →diffutils grep他50種類
  • $ pacman -S msys2-devel →gcc、g++他6種類
  • $ pacman -S mingw-w64-i686-toolchain
  • $ pacman -S mingw-w64-x86_64-toolchain
  • $ pacman -S mingw-w64-x86_64-boost
  • $ pacman -S openssh

で開発環境を導入

$ pacman -S vimでvimをインストール。削除は$ pacman -R vim。検索は$ pacman -Ss vim。

minttyの「一部のアプリで対話モードが動作しない」問題に対処するためにwinptyラッパをインストール。Python/Node.js等をを使用する上では致命的な問題になる。

$ pacman -S winpty

$ pacman -S zshでzshをインストール。シェルをbashからzshに変えるためには、msys2_shell.batをエディタにドラッグしてエディタで開き、39行目のstart %WD%mintty -i /msys2.ico /usr/bin/bash --login %*をstart %WD%mintty -i /msys2.ico /usr/bin/zsh --login %*に変更する。

そして、/etc/profileを編集する

PS1='(%n@%m)[%h] %~ %% 'の次の行に SHELL=`which zsh` を追加する

バージョン確認は、$ vim --version等 デスクトップのパスは、/c/Users/直樹/Desktop、CドライブのmsysフォルダのパスはC:\msys64。コピったほうが早い。

まとめると、C++を取り扱うためには、コンパイラやターミナルが必要となる。MSYS2を入れとくと、g++でcppファイルをコンパイルしてexeファイルを出力可能。エディタはメモ帳でもいいが、vimとかを使うのもいい。

実際C、C++使うには

gcc --version、g++ --versionとかbash --versionでインストールされているかを確認。

vimでもいいがめんどいので、terapadとかで、ひとまず以下の様なコードを入力して.cもしくは.cppで保存。できたファイルをmingw64エディタ(mintty)で、$ g++ aaa.c、$ g++ aaa.cpp、もしくは、$ g++ aaa.cpp -o aiueoみたいにしてコンパイルすると、a.exeやaiueo.exeのような実行ファイルができあがる。

/*c*/
#include               /* この行は必ず書く、と覚える */
int main()                      /* 次からメインのプログラムですよ */
{                               /* 中カッコの中がプログラム本体 */
    printf("hello, world\n");   /* hello, world と表示して改行する */
    return 0;                   /* プログラムを終了します */
}                               /* ちなみにこれは注釈(コメント)です */
/*cpp*/
#include 
 
using namespace std;
 
int main()
{
  cout << "Hello, C++!" << endl;
 
  return 0;
}

この実行ファイルをmingw64のbinフォルダに入れておき、minttyから$ aiueoみたいにコマンドをうち実行すると、コードに書かれた命令が実行される。

binフォルダ内を見ればわかるが、ターミナルに入力するコマンド群はexeファイルとしてこのフォルダ内に格納されていて、ターミナルでコマンド入力することで実行され、シェル(ここではbashを介してカーネルへと命令が伝えられる。

vimの使い方

vimはメモ帳やterapadやサクラエディタと同じテキストエディタで、ターミナル上のCUI環境でも動くのが特徴。コマンドプロンプトでvimと打つと起動する。

CUIで動く分動作が軽いものの、操作方法がマウスではなく、キーボード操作が前提であるために、なれないと使いづらい。

vimのインストールフォルダは「$ cd $VIMRUNTIME」で調べられ、/usr/share/vim/vim74にある。

初期状態では、ここにvim設定ファイルである.vimrcがないので、「$ vim .vimrc」でファイルを作成する。同様にして新しファイルを作りたい時は、「$ vim ファイル名」で作ることが可能。

作った.vimrcは何も書いていないので、下記リンクの設定を記載する。"ダブルクォーテーションはコメントアウト。なお、terapad等のテキストエディタでも編集は可能。

vimの操作方法も以下リンク参照。

zsh環境)シェル)への変更

参考:

コメントor補足情報orご指摘あればをお願いします。

(件名or本文内でキーワード検索できます)



  • << 前のページ
  • 次のページ >>
ページトップへ