1: 2012-09-07 (金) 06:13:02 yuji | 現: 2020-12-26 (土) 16:07:53 yuji Attached file: Makefile |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | #topicpath | ||
- | |||
*MinGWとは [#w167896a] | *MinGWとは [#w167896a] | ||
- | MinGW(Minimalist GNU for Windows)は,GNUの開発ツールのWindows移植版である。MinGWは,Windows APIのためのヘッダファイルを含んでおり,フリーのコンパイラ・セットであるGCCを,Windowsアプリケーションの開発のために利用するための開発ツールです。 | + | MinGW(Minimalist GNU for Windows)は,GNUの開発ツール(gcc,g++,リンカ,アセンブラ,デバッガ,...)のWindows移植版。~ |
- | MinGWは,コマンドラインから使用することも,各種IDEへ統合することも出来る。またMinGWのシェル環境というべきMSYS(minimal system)という軽量のUNIX風シェル環境を持っている。端末エミュレータや開発ツールのautoconfを実行可能にするためのPOSIXコマンド群とかが含まれている。 | + | MinGWはWindows APIのためのヘッダファイルを含んでおり,フリーのコンパイラ・セットであるGCCを,Windowsアプリケーションの開発のために利用するための開発ツール。~ |
- | 標準はたぶんMSYSなんだろうが,EclipseやDOSプロンプト上でも開発することもできる。 | + | コマンドラインから使用することも,各種IDEへ統合することも出来る。~ |
- | MinGWでコンパイルしたプログラムは,Windowsのライブラリ(msvcrt.dll)を利用するため,他にGPLなライブラリを使用していないかぎり,再配布の制約は無いことになる。 | + | またMinGWのシェル環境というべきMSYS(minimal system)という,軽量のUNIX風シェル環境を持っている。~ |
+ | これには端末エミュレータや開発ツールのautoconfを実行可能にするためのPOSIXコマンド群とかが含まれている。 | ||
+ | 標準はたぶんMSYSなんだろうが,EclipseやDOSプロンプト上でも利用することができる。 | ||
- | この2つのパッケージは,Cygwinからフォークして誕生した。Cygwinでは,Windowsの機能性とは別のところでより機能的なUnix風環境を提供している。 | + | MinGWでコンパイルしたプログラムは,Windowsの標準Cライブラリ(msvcrt.dll)を利用するため,他にGPLなライブラリを使用していないかぎり,再配布の制約は無いことになる。 |
- | なお,MinGW,MSYSはフリーソフトウェアで,Win32APIを利用するためのヘッダファイルもパブリックドメインで提供されており,GNUツールの移植版はGPLになっている。 | + | MinGWとMSYSのパッケージは,Cygwinからフォークして誕生した。CygwinはWindows上に完全なPOSIX環境を提供する事を目的にしているが,それに対してMinGWはフリーのコンパイラと各種ツールのみ(POSIX APIは持っていない)を提供していて,MSYSはCygwinと同様なPosixエミュレーションを持ったPosixツール類を提供している。 |
- | MinGWとMSYSを両方合わせてもファイル容量は小さく,それ自身で完結可能な環境なのでUSBペンドライブのようなリムーバブル・メディアに入れても利用できる。Windowsシステムのレジストリなどに全く影響はないので,インストールを削除も簡単に行えます。 | + | |
- | MinGWは,クロス開発環境にも対応する。LinuxマシンでWindowsアプリを開発することが出来ます。 | + | MinGWはクロス開発環境としても利用でき,これによりマルチプラットフォームで利用可能になっている。LinuxマシンでMinGWを使うことで,Windowsアプリを開発することが出来る。~ |
- | *MinGWのインストール [#rca75768] | + | なお,MSYS・MinGWはフリーソフトウェアで,Win32APIを利用するためのヘッダファイルもパブリックドメインで提供されており,GNUツールの移植版はGPLになっている。 |
- | **MinGWのインストール(32bit版) [#c6243664] | + | |
- | http://sourceforge.net/projects/mingw/ のページにある緑色のDownloadからmingw-get-inst-20120426.exeをダウンロードします。(09/07/2012時) | + | MSYSとMinGWを両方合わせてもファイル容量は比較的小さいので,USBペンドライブのようなリムーバブル・メディアに入れても利用できる。~ |
- | そのファイルを実行します。 | + | Windowsシステムのレジストリなどを全く使用しないので,インストールも削除も簡単に行える。 |
+ | |||
+ | ''MinGWはWindowsで動作する32bitアプリを作成のためのツールで,64bitアプリは作成できない。64bitアプリ作成には,MinGWからフォークしたMingw-w64がある。'' | ||
+ | |||
+ | またMSYSをより新しくしたMSYS2がリリースされている。~ | ||
+ | |||
+ | WindowsマシンでMinGWを利用する場合,MinGW(32bitアプリ開発用)とそこからフォークしたMingw-w64(32bit/64bitアプリ開発用)があって選択できる。~ | ||
+ | |||
+ | * MSYS/MinGWのインストール [#q90c4ac2] | ||
+ | ''MSYS/MinGWは古いパッケージで,32bitアプリのみ作成できる開発ツール。''~ | ||
+ | |||
+ | 64bitアプリを作成したい場合は,後述の''Mingw-w64''をインストールする。~ | ||
+ | まだMSYS/MinGWをインストールしてない場合は,''より新しい[[MSYS2/Mingw-w64をインストール>./#xde2a8b1]]したほうが良い。''~ | ||
+ | |||
+ | 理由は以下のような理由がある。~ | ||
+ | - MSYS2がMSYSより新しい~ | ||
+ | - MSYS2はパッケージ管理ツールpacmanで,インストールするパッケージを管理できる~ | ||
+ | - Git for WindowsはMSYS2を使用している~ | ||
+ | - Rubyの一部のgemをコンパイルするためにDevkitを使うが,DevkitはMSYS2/Mingw-w64を使っている~ | ||
+ | |||
+ | ** MSYS/MinGWのインストール(32bit版) [#tc16c4db] | ||
+ | http://sourceforge.net/projects/mingw/ のページにある緑色のDownloadから''mingw-get-setup.exe''をダウンロードする。(09/07/2012時)~ | ||
+ | そのダウンロードしたインストーラーを実行する。~ | ||
-Repository Catalogues~ | -Repository Catalogues~ | ||
Use pre-packaged repository cataloguesを選択する。 | Use pre-packaged repository cataloguesを選択する。 | ||
Line 29: | Line 50: | ||
Finishで終わり。 | Finishで終わり。 | ||
- | **MinGWのインストール(64bit版) [#r0221182] | + | ちなみに,GCCのバージョンは,6.3.0です。 |
- | 32/64bit共用のWindows向けMinGWもある。まだインストーラ形式での配布は開始されていないが,zipおよびtar+gzipで書庫化されたパッケージを利用すれば,手動でインストールできる。 | + | //**MinGWのインストール(64bit版) [#r0221182] |
+ | // | ||
+ | //32/64bit共用のWindows向けMinGWもある。まだインストーラ形式での配布は開始されていないが,zipおよびtar+gzipで書庫化されたパッケージを利用すれば,手動でインストールできる。 | ||
+ | // | ||
+ | //-配布サイトから,書庫化パッケージをダウンロード http://sourceforge.net/projects/mingw-w64/ のページから,最新版のmingw-w64-bin_x86_64-mingw_20111101_sezero.zipをダウンロードする(09/07/2012時点) | ||
+ | //-C:\MinGWあたりに解凍する~ | ||
+ | //mingw-w64-bin_x86_64-mingw_20111101_sezero.zipをC:\MinGWあたりに解凍すれば,インストール自体は終了。 | ||
+ | //-シェルなど必要な一式が同梱された「MSYS」をインストールする~ | ||
+ | //http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/MSYS-1.0.11.exe///download からMSYSをダウンロードして実行してインストールする。~ | ||
+ | //途中でMinGWのパスを聞かれるので,C:/MinGWを入力する。 | ||
- | -配布サイトから,書庫化パッケージをダウンロード http://sourceforge.net/projects/mingw-w64/ のページから,最新版のmingw-w64-bin_x86_64-mingw_20111101_sezero.zipをダウンロードする(09/07/2012時点) | + | //**パスの設定 [#c1e3bb84] |
- | -C:\MinGWあたりに解凍する~ | + | //ツールとして実行できるようにpathを通しておきます。~ |
- | mingw-w64-bin_x86_64-mingw_20111101_sezero.zipをC:\MinGWあたりに解凍すれば,インストール自体は終了。 | + | //-コントロール パネル>システムとセキュリティ>システムをクリックし,システムの詳細設定を開く~ |
- | -シェルなど必要な一式が同梱された「MSYS」をインストールする~ | + | //-詳細設定タブの「環境変数」をクリック~ |
- | http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/MSYS-1.0.11.exe/download からMSYSをダウンロードして実行してインストールする。~ | + | //-システム環境変数の「Path」を選択して「編集」をクリック~ |
- | 途中でMinGWのパスを聞かれるので,C:/MinGWを入力する。 | + | //-pathを設定する~ |
+ | //インストール時にデフォルトディレクトリ「C:\MinGW」にした場合は,;C:\MinGW\binをpath環境変数に追加する。 | ||
+ | // | ||
+ | //この後,コマンドプロンプトを起動し,「gcc --version」と実行したら,gccの情報が表示されればOK。 | ||
- | *パスの設定 [#c1e3bb84] | + | **他のMSYSパッケージの追加 [#uab044b1] |
- | ツールとして実行できるようにpathを通しておきます。~ | + | コマンドプロンプトで, |
- | -コントロール パネル>システムとセキュリティ>システムをクリックし,システムの詳細設定を開く~ | + | mingw-get list | less |
- | -詳細設定タブの「環境変数」をクリック~ | + | とすると,追加できるパッケージを見ることが出来る。 |
- | -システム環境変数の「Path」を選択して「編集」をクリック~ | + | |
- | -pathを設定する~ | + | また,MinGW Installerでパッケージの更新も出来る。 |
- | インストール時にデフォルトディレクトリ「C:\MinGW」にした場合は,;C:\MinGW\binをpath環境変数に追加する。 | + | |
+ | * MSYS2/MinGW-w64のインストール [#xde2a8b1] | ||
+ | MSYS2は上記の古いMSYSをバージョンアップした新しいPOSIX環境(Posixエミュレーション)。~ | ||
+ | MinGW-w64は,32bitと64bitアプリどちらも作成可能なGnu GCC開発ツールで,GCCのバージョンもより新しくなっている。~ | ||
+ | |||
+ | MSYS2とMingw-w64はそれぞれ別々にインストールすることが出来る。~ | ||
+ | なので''既にインストールしてある古いMSYSをそのまま使用して,MinGW-w64のみをインストールして64bitアプリの開発をするといった事ができる。''~ | ||
+ | |||
+ | また''MSYSの代わりに[[MSYS2を新たにインストール>./#cb7537f6]]して,MSYS2のパッケージ管理ツールpacmanを使用してMinGW-w64をインストールする事もできる。''~ | ||
+ | |||
+ | ** MinGW-w64のみをインストール(64bit版/32bit版) [#de943ec9] | ||
+ | 従来のMSYSをインストールしていてその環境を使って64bitアプリを開発したいなどの理由でMinGW-w64をインストールしたい場合は,MinGW-w64のみをインストールする。~ | ||
+ | |||
+ | MinGW-w64を使って32bitと64bitのコードの両方のプログラムを出力するようにするには,32bitコードを出力するコンパイラと64bitコードを出力するコンパイラの両方をインストールして切り替えて利用することになる。~ | ||
+ | |||
+ | ''MSYS/MinGWがインストールされていない場合は,まず[[MSYS2をインストール>./#cb7537f6]]後にパッケージ管理ツールでMinGW-w64をインストールする。''~ | ||
+ | |||
+ | この場合は,MinGW-w64のみをインストールはしないようにする。~ | ||
+ | |||
+ | *** MinGW-w64のみをインストールする [#zcdaba26] | ||
+ | ''MinGW-w64のみをインストールするには'', [[公式サイト>http://sourceforge.net/projects/mingw-w64]]から,インストーラの''mingw-w64-install.exe''をダウンロードする。~ | ||
+ | |||
+ | ダウンロードしたインストーラを実行すると,インストールが始まる。~ | ||
+ | Settings画面で,インストールするGCCのバージョン,アーキテクチャ,スレッドライブラリの種類,例外機構の選択が出来る。 | ||
+ | |||
+ | - Version:インストールしたいGCCのバージョンを選択。(特に理由がない場合は最新版で良いと思う。)~ | ||
+ | - Architecture:ターゲットシステムのアーキテクチャーを選択する。~ | ||
+ | -- i686(32bit)かx86_64(64bit)を選択する。~ | ||
+ | - Thread : スレッドモデルの選択。posixかwin32を選択する。(特に理由がないのであればposixで良いと思う。)~ | ||
+ | -- posix:POSIXスレッド。Unix,Linux,Windowsをサポートしている。~ | ||
+ | -- win32:WIN32スレッドのみをサポートしている。 | ||
+ | win32はWindowsネイティブ関数を使っていて速いのだが,C++ 11以降のthread,mutex,futureが使えなくなる。 | ||
+ | - Exception:例外処理ハンドリングの選択。アーキテクチャーにより以下を選択できる。~ | ||
+ | -- i686~ | ||
+ | --- dwarf:DWARF~ | ||
+ | --- sjlj:SetJump/LongJump~ | ||
+ | C++標準ライブラリを使用した例外処理 | ||
+ | -- x86_64~ | ||
+ | --- seh:Structured Exception Handling~ | ||
+ | Windowsネイティブな例外処理。(おすすめ)~ | ||
+ | - Build Version:ビルドバージョンの選択。(特に理由がなければ最新版で良いと思う。)~ | ||
+ | |||
+ | Architectureを''x86_64''にすると64bit出力するコンパイラが,''i686''にすると32bit出力するコンパイラがインストールされる。 | ||
+ | |||
+ | インストール先は,デフォルトではC:\Program Files以下にインストールされるので,''C:\MinGW64''のように,短いパスになるように変更してインストールするようにします。 | ||
+ | |||
+ | コンパイラの本体は, | ||
+ | - 64bit出力コンパイラの場合~ | ||
+ | [インストールしたディレクトリ]\mingw64~ | ||
+ | - 32bit出力コンパイラの場合~ | ||
+ | [インストールしたディレクトリ]\mingw32~ | ||
+ | |||
+ | にインストールされる。 | ||
+ | |||
+ | 環境変数のpathに,インストールしたディレクトリ\binを追加しておく。この時に64bitか32bitのコンパイラを選択して,これらのディレクトリをpathに追加しておく。 | ||
+ | |||
+ | ** MSYS2をインストールしてMinGW-w64を追加インストールする [#cb7537f6] | ||
+ | MSYS2はMSYSをより新しくしたPOSIX環境のツール。MSYSと基本的には違いは少ないが含まれているツール類がより新しいバージョンになっている。~ | ||
+ | もし既にMSYSを使用している場合でも,''MSYSからMSYS2に移行したほうが良い''と思う。~ | ||
+ | |||
+ | MSYS2をインストールするには,[[公式サイト>http://sourceforge.net/projects/msys2]]からインストーラーをダウンロードする。~ | ||
+ | %%32bit版はmsys2-i686-20190524.exeで,64bit版はmsys2-x86_64-20190524.exeになる。自分のPCに合わせて好きな方を選んでダウンロードする。%%~ | ||
+ | 32bit版は2020/05/17からリリースされなくなった。64bit版のインストラーは''msys2-x86_64-yyyymmdd.exe''になっている。~ | ||
+ | |||
+ | ダウンロードしたインストーラをダブルクリックして,インストールを行う。~ | ||
+ | インストール場所は,''C:\msys2 とか C:\msys64''とか,とにかく短くなるようにします。~ | ||
+ | |||
+ | 実は''Git for Windows''をインストールするとMSYS2もインストールされる。~ | ||
+ | というか''Git for Windows''がMSYS2環境を使用して動作しているので,''Git for Windows''をインストールしている場合は,同じMSYS2がダブってインストールされることになる。~ | ||
+ | |||
+ | MSYS2のパッケージ管理ツールからGitをインストールすることも出来るので,この場合は''Git for Windows''をインストールする必要はない。~ | ||
+ | |||
+ | *** パッケージ管理ツールからMinGW-w64をインストール [#w49cc8c0] | ||
+ | MSYS2がインストールできたら,プログラムメニューからMSYS2の''MSYS Shell''をクリックして起動する。~ | ||
+ | |||
+ | コマンドプロンプトに似た画面(Bashシェル)が表示されるので,以下のようにしてパッケージ管理情報を更新する。~ | ||
+ | この時,処理が完了してもプロンプトには戻らないので,強制的にXボタンを使ってウィンドウを閉じます。~ | ||
+ | $ pacman -Syu | ||
+ | : | ||
+ | : | ||
+ | 警告: terminate MSYS2 without returning to shell and check for updates again | ||
+ | 警告: for example close your terminal window instead of calling exit | ||
+ | |||
+ | 再度,MSYS2の''MSYS Shell''を起動して,同じコマンドをもう一度実行します。 | ||
+ | $ pacman -Syu | ||
+ | 更新パッケージがあればリストアップされるので,yを入力してパッケージを更新します。~ | ||
+ | そして, | ||
+ | $ pacman -Suu | ||
+ | とします。 | ||
+ | |||
+ | 次に,MinGW-w64(64bitアプリを作成する)をインストールします。 | ||
+ | $ pacman -S base-devel | ||
+ | $ pacman -S mingw-w64-x86_64-toolchain | ||
+ | 必要であれば,MinGW-w64(32bitアプリを作成する)をインストールする。 | ||
+ | > pacman -S mingw-w64-i686-toolchain | ||
+ | |||
+ | これらのインストール場所は以下のようになる。(MSYS2をC:\msys64にインストールした場合) | ||
+ | c:\msys64 : MSYS2 (64bit) | ||
+ | c:\msys64\mingw64 : MinGW-w64 (64bit) | ||
+ | c:\msys64\mingw32 : MinGW-w64 (32bit) | ||
+ | |||
+ | MinGW-w64のインストールはこれでOKです。~ | ||
+ | |||
+ | MSYS2 MinGW 32-bitをクリックすれば32bit MinGWが使えて,MSYS2 MinGW 64-bitで64bit MinGWが使用出来るようになっています。 | ||
+ | |||
+ | * 環境変数pathの設定 [#e17bd6be] | ||
+ | MSYS/MinGWまたはMSYS2/Mingw-w64をインストールしたら,Windowsのコマンドプロンプトからも開発ツールとして実行できるように環境変数のpathに追加しておきます。 | ||
+ | - コントロール パネル>システムとセキュリティ>システムをクリックし,システムの詳細設定を開く~ | ||
+ | - 詳細設定タブの「環境変数」をクリック~ | ||
+ | - システム環境変数(全ユーザーで使用する場合)またはユーザーの環境変数の「Path」を選択して「編集」をクリック~ | ||
+ | - MSYS/MinGWまたはMSYS2/MinGW-w64を追加する~ | ||
+ | 以下のように環境変数を設定する。~ | ||
+ | MSYS/MinGWの場合, | ||
+ | MINGW_HOME=C:\MinGW | ||
+ | MSYS_HOME=C:\MinGW\msys\1.0 | ||
+ | // LANG=ja_jp.SJIS | ||
+ | // LESSCHARSET=utf-8 | ||
+ | MSYS2/MinGW-w64の場合, | ||
+ | MINGW_HOME=C:\msys64\mingw64(or mingw32) | ||
+ | MSYS_HOME=C:\msys64\usr | ||
+ | MSYS2_PATH_TYPE=inherit | ||
+ | // LANG=ja_JP.UTF-8 | ||
+ | // LESSCHARSET=utf-8 | ||
+ | のようにする。MSYS2_PATH_TYPE=inheritは,WindowsのPATH環境変数をそのまま使用する設定。~ | ||
+ | //Git for Windowsで日本語が文字化けしないようにLANG変数をja_JP.UTF-8(MSYSの場合はja_jp.SJISにトリックしてる。)とLESSCHARTSET変数をutf-8に設定します。~ | ||
+ | //MSYSでのlessコマンドはデフォルトがsjis(dos)のため,utf-8に変更しないとGit for Windowsで日本語文字が文字化けする。MSYS2のlessコマンドはデフォルトがutf-8になっているので設定する必要はないが設定しても問題はない。~ | ||
+ | ~ | ||
+ | そして,環境変数pathに, | ||
+ | %MINGW_HOME%\bin;%MSYS_HOME%\bin; | ||
+ | を適当な場所に追加する。(ユーザー環境変数でも良い。)~ | ||
+ | |||
+ | この後,コマンドプロンプトを起動して「gcc --version」と実行したら,gccの情報が表示されればOK。 | ||
+ | D:\home\ueno> gcc --version | ||
+ | gcc (MinGW.org GCC-6.3.0-1) 6.3.0 | ||
+ | Copyright (C) 2016 Free Software Foundation, Inc. | ||
+ | This is free software; see the source for copying conditions. There is NO | ||
+ | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
+ | MinGWをインストールした場合は,このように表示される。 | ||
+ | |||
+ | MinGW-w64の場合は以下の表示される。~ | ||
+ | D:\home\ueno> gcc --version | ||
+ | gcc.exe (Rev3, Built by MSYS2 project) 13.2.0 | ||
+ | Copyright (C) 2023 Free Software Foundation, Inc. | ||
+ | This is free software; see the source for copying conditions. There is NO | ||
+ | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
+ | |||
+ | * MSYS/MSYS2の起動と環境 [#bf026ee2] | ||
+ | スタートメニューから「MinGW Shell」または「MSYS2 MSYS,MSYS2 MinGW 32bit,MSYS2 MinGW 64bit」で,コンソール(シェルはBash)が動作する。Linux(Unix)と同じシェルが使えるようになる。 | ||
+ | |||
+ | この時,カレントディレクトリはユーザーの環境変数HOMEに設定したディレクトリになる。環境変数HOMEを設定していない場合は,C:\MinGW\msys\1.0\home\(ユーザ名)というディレクトリが作成されて,そこを使うようになる。 | ||
+ | |||
+ | なので,''環境変数HOMEによく自分が使う作業ディレクトリを設定しておくと良い。'' | ||
+ | |||
+ | ** ロケール環境 [#scdb098c] | ||
+ | MSYSの場合はPosixコマンド類の日本語コードは''デフォルトがSJIS''になっている。~ | ||
+ | しかもMSYSに含まれているコマンドは,ロケール設定に関わらずSJISになるようだ。~ | ||
+ | [yueno@nalux-d0523:~]$ locale | ||
+ | LANG=ja_JP.SJIS | ||
+ | LC_CTYPE="ja_JP.SJIS" | ||
+ | LC_NUMERIC="ja_JP.SJIS" | ||
+ | LC_TIME="ja_JP.SJIS" | ||
+ | LC_COLLATE="ja_JP.SJIS" | ||
+ | LC_MONETARY="ja_JP.SJIS" | ||
+ | LC_MESSAGES="ja_JP.SJIS" | ||
+ | LC_ALL= | ||
+ | |||
+ | [yueno@nalux-d0523:~]$ echo $LESSCHARSET | ||
+ | dos | ||
+ | [yueno@nalux-d0523:~]$ echo $OUTPUT_CHARSET | ||
+ | sjis | ||
+ | |||
+ | MSYS2の場合はPosixコマンド類の日本語コードは''デフォルトがUTF-8''になっている。~ | ||
+ | MSYS2に含まれているコマンドは,ロケール設定を反映した動作をする。~ | ||
+ | [yueno@nalux-d0523:~]$ locale | ||
+ | LANG=ja_JP.UTF-8 | ||
+ | LC_CTYPE="ja_JP.UTF-8" | ||
+ | LC_NUMERIC="ja_JP.UTF-8" | ||
+ | LC_TIME="ja_JP.UTF-8" | ||
+ | LC_COLLATE="ja_JP.UTF-8" | ||
+ | LC_MONETARY="ja_JP.UTF-8" | ||
+ | LC_MESSAGES="ja_JP.UTF-8" | ||
+ | LC_ALL= | ||
+ | |||
+ | [yueno@nalux-d0523:~]$ echo $LESSCHARSET | ||
+ | dos | ||
+ | [yueno@nalux-d0523:~]$ echo $OUTPUT_CHARSET | ||
+ | dos | ||
+ | |||
+ | なので,''MSYSとMSYS2では使うコンソールのローケール設定に注意する''。コンソールの表示とロケール等が一致していないと,コンソール表示で日本語が文字化けする。~ | ||
+ | さらにLESSCHARSETとOUTPUT_CHARSET環境変数もうまい具合に設定する必要がある。~ | ||
+ | |||
+ | ''Git for Windows''をインソールして併用する場合は,GitコマンドがUTF-8を想定している(MSYS2を使っているから)ので,実行するコンソール環境はUTF-8で使用しないと日本語が文字化けする。~ | ||
+ | このため,''コマンドプロンプト''でGit for Windowsやmanコマンドを使用する時は,BATファイルなどでLAN環境変数をja_JP.UTF-8に一時的に変更して実行する。~ | ||
+ | |||
+ | ''git.bat''~ | ||
+ | @echo off | ||
+ | setlocal | ||
+ | |||
+ | :SETLESS | ||
+ | set LANG=ja_JP.UTF-8 | ||
+ | |||
+ | :CMDEXE | ||
+ | git.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 | ||
+ | |||
+ | endlocal | ||
- | この後,コマンドプロンプトを起動し,「gcc --version」と実行したら,gccの情報が表示されればOK。 | + | bashを使っている場合は,以下のようなaliasにしておく。~ |
+ | alias git='LANG=ja_JP.UTF-8 LESSCHARSET=utf-8 git' | ||
- | *MSYSの起動と環境 [#bf026ee2] | + | ** Windowsのディレクトリとの対応 [#u4ccc052] |
- | スタートメニューから「MinGW Shell」で,コンソール(シェルはsh)が動作する。~ | + | *** MSYS/MinGWをインストールした場合 [#c96914fc] |
- | この時,カレントディレクトリは,ユーザーの$HOMEになる。~ | + | ''C:\MinGW\msys\1.0\etc''に,fstabというファイルを作成する。(C:\MinGWにインストールした場合) |
+ | c:/mingw /mingw | ||
- | **Windowsのディレクトリとの対応 [#web86761] | + | このようにすると,ShellであるBashコンソールを開いた時に, |
/ は,C:\MinGW\msys\1.0 | / は,C:\MinGW\msys\1.0 | ||
/usr は,/と同じでC:\MinGW\msys\1.0 | /usr は,/と同じでC:\MinGW\msys\1.0 | ||
Line 60: | Line 299: | ||
/c は,C:\ | /c は,C:\ | ||
/mingw は,C:\MinGW (/etc/fstabでマウントされている。) | /mingw は,C:\MinGW (/etc/fstabでマウントされている。) | ||
+ | のようになります。 | ||
- | **カスタマイズ [#dcc848ca] | + | Bashを起動して確認してみる。 |
- | /usr/localがないので必要であれば作成する。標準的な,UNIX/Linuxでは,ユーザーが追加したコンポーネントなどはデフォルトでここに入る。 | + | [yueno@nalux-d0523:~]$ mount |
- | mkdir /usr/local | + | C:\Users\yueno\AppData\Local\Temp on /tmp type user (binmode,noumount) |
- | インストール直後のカレントディレクトリ,つまり$HOMEは/home/(ユーザー名)つまりC:\Documents and Settings\(ユーザー名)になっている HOME環境変数を作成していれば,その場所になる。~ | + | C:\MinGW\msys\1.0 on /usr type user (binmode,noumount) |
- | /etc/profile(C:\MinGW\msys\1.0\profile)の最後を編集してもOK。 | + | C:\MinGW\msys\1.0 on / type user (binmode,noumount) |
- | export WORK=/d/home/yuji | + | C:\mingw on /mingw type user (binmode) |
+ | c: on /c type user (binmode,noumount) | ||
+ | d: on /d type user (binmode,noumount) | ||
+ | e: on /e type user (binmode,noumount) | ||
+ | f: on /f type user (binmode,noumount) | ||
+ | g: on /g type user (binmode,noumount) | ||
+ | s: on /s type user (binmode,noumount) | ||
+ | u: on /u type user (binmode,noumount) | ||
+ | x: on /x type user (binmode,noumount) | ||
+ | y: on /y type user (binmode,noumount) | ||
+ | z: on /z type user (binmode,noumount) | ||
+ | このように,Windowsでの各ドライブなども全て/(ルート)からのパスでアクセスできるようになっている。 | ||
+ | [yueno@nalux-d0523:~]$ ls / | ||
+ | bin etc include lib local m.ico msys.bat msys.ico postinstall sbin share var | ||
+ | |||
+ | *** MSYS2/MinGW-w64をインストールした場合 [#v2154497] | ||
+ | ''C:\msys64\etc''に,fstabというファイルがあるので編集する。(C:\msys64にインストールした場合) | ||
+ | c:/msys64/mingw64 /mingw64 | ||
+ | |||
+ | このようにすると,ShellであるBashコンソールを開いた時に, | ||
+ | / は,C:\msys64 | ||
+ | /usr は,/と同じでC:\msys64 | ||
+ | /home/(ユーザー名) は,通常だとC:\Documents and Settings\(ユーザー名) | ||
+ | /c は,C:\ | ||
+ | /mingw64 は,C:\msys64\mingw64 (/etc/fstabでマウントされている。) | ||
+ | のようになります。~ | ||
+ | |||
+ | このようにすると,32bitのgcc(mingw32)を使う場合は, | ||
+ | c:/msys64/mingw32 /mingw32 | ||
+ | とfstabファイルを書き換えないとダメ。 | ||
+ | |||
+ | Bashを起動して確認してみる。 | ||
+ | [yueno@nalux-d0523:~]$ mount | ||
+ | c:/msys64/mingw64 on /mingw64 type ntfs (binary,noacl,posix=0) | ||
+ | c:/msys64/msys64 on / type ntfs (binary,noacl,auto) | ||
+ | c:/msys64/usr/bin on /bin type ntfs (binary,noacl,auto) | ||
+ | C: on /c type ntfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | D: on /d type ntfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | E: on /e type ntfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | S: on /s type ntfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | U: on /u type smbfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | X: on /x type smbfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | Y: on /y type smbfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | Z: on /z type smbfs (binary,noacl,posix=0,user,noumount,auto) | ||
+ | このように,Windowsでの各ドライブなども全て/(ルート)からのパスでアクセスできるようになっている。 | ||
+ | [yueno@nalux-d0523:~]$ ls / | ||
+ | InstallationLog.txt components.xml maintenancetool.dat mingw32 mingw64 msys2.exe msys2_shell.cmd test.bat var | ||
+ | autorebase.bat dev maintenancetool.exe mingw32.exe mingw64.exe msys2.ico network.xml tmp | ||
+ | bin etc maintenancetool.ini mingw32.ini mingw64.ini msys2.ini proc usr | ||
+ | |||
+ | なので,''/etc/fstab(C:\msys64\etc\fstab)''に/mingw64のマウントポイントを追加しないで,''/etc/profile(C:\msys64\etc\profile)''を修正したほうが良い。~ | ||
+ | この場合は,以下のようにする。~ | ||
+ | MINGW32) | ||
+ | MINGW_MOUNT_POINT="${MINGW_PREFIX}" | ||
+ | PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL_PATH:+:${ORIGINAL_PATH}}" | ||
+ | ↓ | ||
+ | PATH="/c/msys64/mingw32/bin:${MSYS2_PATH}${ORIGINAL_PATH:+:${ORIGINAL_PATH}}" | ||
+ | : | ||
+ | : | ||
+ | MINGW64) | ||
+ | MINGW_MOUNT_POINT="${MINGW_PREFIX}" | ||
+ | PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL_PATH:+:${ORIGINAL_PATH}}" | ||
+ | ↓ | ||
+ | PATH="/c/msys64/mingw64/bin:${MSYS2_PATH}${ORIGINAL_PATH:+:${ORIGINAL_PATH}}" | ||
+ | に,MinGW-w64のgccの場所を実行パスを設定している。こうすると,32bit gccを使う場合と64bitのgccを使う場合とを,起動BATファイルで選択できるようになる。 | ||
+ | |||
+ | ** カスタマイズ [#f5981fd5] | ||
+ | ''/usr/local''がないので,必要であれば作成する。標準的なUNIX/Linuxでは,ユーザーが追加したコンポーネントなどはデフォルトでここに入るのが普通。 | ||
+ | [yueno@d0523:~]$ mkdir /usr/local | ||
+ | |||
+ | 上記のように,インストール直後のカレントディレクトリつまり$HOMEは,環境変数HOMEが設定されていない場合/home/<ユーザー名>が自動でセットされる。~ | ||
+ | 環境変数HOMEを作成していれば,その場所になる。 | ||
+ | |||
+ | /etc/profile(C:\MinGW\msys\1.0\profile)ファイルの最後に以下のように追加しても良い。~ | ||
+ | ''/etc/profile''~ | ||
+ | export WORK=/c/home/yuji | ||
cd $WORK | cd $WORK | ||
- | * MinGWの削除 [#yc551374] | + | * アンインストール [#df856700] |
- | MinGWをアンインストールしたい時などは,コントロールパネルのアンインストールして,c:\MinGWをディレクトリごと削除する。 | + | MSYS/MinGWをアンインストールしたい時などは,コントロールパネルのプログラムと機能からMinGWをアンインストールできる。~ |
+ | その後インストールしたディレクトリを削除する。~ | ||
- | *他のMSYSパッケージの追加 [#uab044b1] | + | MSYS2/MinGW-w64のアンインストールも同様に,コントロールパネルのプログラムと機能でアンインストールできる。~ |
- | コマンドプロンプトで, | + | |
+ | * 他のパッケージの追加 [#i0accb63] | ||
+ | MSYS/MinGWでパッケージを追加する場合は,コマンドプロンプトで, | ||
mingw-get list | less | mingw-get list | less | ||
とすると,追加できるパッケージを見ることが出来る。 | とすると,追加できるパッケージを見ることが出来る。 | ||
- | * Makefileの雛形 [#e21520ff] | + | MSYS2/MinGW-w64の場合は,パッケージ管理ツールpacmanでパッケージの追加・更新などが出来る。~ |
+ | pacman -h ヘルプ | ||
+ | pacman -<option> -h -<オプション>のヘルプ | ||
+ | pacman -Sy 最新のパッケージデータベースをダウンロードする | ||
+ | pacman -Su パッケージのアップデート(事前にupdate-coreが必要) | ||
+ | pacman -Syu パッケージのアップデート(-Syと-Suを同時に行う) | ||
+ | pacman -S [package] パッケージをインストールする | ||
+ | pacman -R [package] パッケージが必要としていたものを残したままアンインストールする | ||
+ | pacman -Rs [package] パッケージと必要としていたものもアンインストールする | ||
+ | pacman -Ss [pattern] パッケージを検索 | ||
+ | pacman -Sl | grep [pattern] パッケージの検索2(インストール済み) | ||
+ | pacman -Sg パッケージグループの一覧を表示 | ||
+ | pacman -Qqe インストール済みのパッケージ一覧を表示 | ||
+ | pacman -Si [package] 詳しい情報を表示 | ||
+ | pacman -Sc 使っていないキャッシュを削除 | ||
+ | |||
+ | * Makefileの雛形 [#ya20c23f] | ||
プログラム開発時には,実行ファイルを作成する場合にmakeを使うと便利。makeは標準でMakefileと呼ばれるファイルを使用するが,その雛形を作っておいてそれをコピーして使用するのが楽。~ | プログラム開発時には,実行ファイルを作成する場合にmakeを使うと便利。makeは標準でMakefileと呼ばれるファイルを使用するが,その雛形を作っておいてそれをコピーして使用するのが楽。~ | ||
- | Makefileの雛形:&ref(Makefile); これをMakefileとしてコピーして使うと楽かも。 | + | Makefileの雛形:&ref(Makefile); これをMakefileとしてコピーして使うと楽かも。~ |
+ | |||
+ | まあ, [[Autotools>/開発/autotools]] や [[CMake>/開発/CMake]] を使ったほうが便利。 |