上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
開発/toolchain/MinGW
をテンプレートにして作成
資料室
開発/toolchain/MinGW をテンプレートにして作成
[
差分
|
バックアップ
|
リロード
]
[ ]
開始行:
*MinGWとは
MinGW(Minimalist GNU for Windows)は,GNUの開発ツール(g...
MinGWはWindows APIのためのヘッダファイルを含んでおり,フ...
コマンドラインから使用することも,各種IDEへ統合することも...
またMinGWのシェル環境というべきMSYS(minimal system)とい...
MSYSには端末エミュレータや開発ツールのautoconfを実行可能...
標準はたぶんMSYSを使うのだろうが,EclipseやWindowsのコマ...
MinGWでコンパイルしたプログラムは,Windowsの標準Cライブラ...
MinGWとMSYSのパッケージは,Cygwinからフォークして誕生した...
CygwinはWindows上に完全なPOSIX環境を提供する事を目的にし...
MinGWはクロス開発環境としても利用でき,これによりマルチプ...
LinuxマシンでもMinGWを使うことでWindowsアプリを開発するこ...
MSYS・MinGWはフリーソフトウェアで,Win32APIを利用するため...
MSYSとMinGWを両方合わせてもファイル容量は比較的小さいので...
Windowsのレジストリなどを全く使用しないので,インストール...
注意することとして,''MinGWはWindowsで動作する32bitアプリ...
''64bitアプリケーションを作成したい時は,MinGWからフォー...
WindowsマシンでMinGWを利用する場合,MinGW(32bitアプリ開...
また,MSYSをより新しくしたMSYS2がリリースされている。~
* MSYS/MinGWのインストール
''MSYSとMinGWは共に古いパッケージなのと,32bitアプリのみ...
64bitアプリを作成したい場合は,後述の''MinGW-w64''をイン...
まだMSYS/MinGWをインストールしてない場合は,''より新しい[...
理由は以下のような理由がある。~
- MSYS2はMSYSより新しい~
- MSYS2はパッケージ管理ツールpacmanでインストールするパッ...
- 他のツールとの互換性~
-- Git for WindowsはMSYS2/MinGW-w64を使用している~
-- Rubyの一部のgemをコンパイルするためにDevkitを使うが,D...
** MSYS/MinGWのインストール(32bit版)
http://sourceforge.net/projects/mingw/ のページにある緑色...
そのダウンロードしたインストーラーを実行する。~
-Repository Catalogues~
Use pre-packaged repository cataloguesを選択する。
-インストールするディレクトリ先の設定~
デフォルトは,「C:\MinGW」。スペースとか日本語は使わない...
-Select Components
C Compier,C++ Compiler,MSYS Basic System,MinGW Develop...
-Installを押して,インストールを実行する。
Finishで終わり。
ちなみに,GCCのバージョンは,6.3.0です。
//**MinGWのインストール(64bit版) [#r0221182]
//
//32/64bit共用のWindows向けMinGWもある。まだインストーラ...
//
//-配布サイトから,書庫化パッケージをダウンロード http://...
//-C:\MinGWあたりに解凍する~
//mingw-w64-bin_x86_64-mingw_20111101_sezero.zipをC:\MinG...
//-シェルなど必要な一式が同梱された「MSYS」をインストール...
//http://sourceforge.net/projects/mingw/files/MSYS/Base/m...
//途中でMinGWのパスを聞かれるので,C:/MinGWを入力する。
//**パスの設定 [#c1e3bb84]
//ツールとして実行できるようにpathを通しておきます。~
//-コントロール パネル>システムとセキュリティ>システムを...
//-詳細設定タブの「環境変数」をクリック~
//-システム環境変数の「Path」を選択して「編集」をクリック~
//-pathを設定する~
//インストール時にデフォルトディレクトリ「C:\MinGW」にし...
//
//この後,コマンドプロンプトを起動し,「gcc --version」と...
**他のMSYSパッケージの追加
コマンドプロンプトで,
mingw-get list | less
とすると,追加できるパッケージを見ることが出来る。
また,MinGW Installerでパッケージの更新も出来る。
* MSYS2/MinGW-w64のインストール
MSYS2は上記の古いMSYSをバージョンアップした,新しいPOSIX...
MinGW-w64は32bitと64bitのどちらのアプリケーションも作成可...
MSYS2とMinGW-w64はそれぞれ別々にインストールすることが出...
なので既にインストールしてある古いMSYSをそのまま使用して...
また,MSYSの代わりに[[MSYS2を新たにインストール>./#cb7537...
** MinGW-w64のみをインストール(64bit版/32bit版)
従来のMSYSをインストールしていてその環境を使って64bitアプ...
MinGW-w64を使って32bitと64bitのコードの両方のプログラムを...
''MSYS/MinGWがインストールされていない場合は,まず[[MSYS2...
この場合は,MinGW-w64のみをインストールはしないようにする...
*** MinGW-w64のみをインストールする
''MinGW-w64のみをインストールするには'', [[公式サイト>ht...
ダウンロードしたインストーラを実行すると,インストールが...
Settings画面で,インストールするGCCのバージョン,アーキテ...
- Version:インストールしたいGCCのバージョンを選択。(特...
- Architecture:ターゲットシステムのアーキテクチャーを選...
-- i686(32bit)かx86_64(64bit)を選択する。~
- Thread : スレッドモデルの選択。posixかwin32を選択する。...
-- posix:POSIXスレッド。Unix,Linux,Windowsをサポートし...
-- win32:WIN32スレッドのみをサポートしている。
win32はWindowsネイティブ関数を使っていて速いのだが,C++ 1...
- Exception:例外処理ハンドリングの選択。アーキテクチャー...
-- i686~
--- dwarf:DWARF~
--- sjlj:SetJump/LongJump~
C++標準ライブラリを使用した例外処理
-- x86_64~
--- seh:Structured Exception Handling~
Windowsネイティブな例外処理。(おすすめ)~
- Build Version:ビルドバージョンの選択。(特に理由がなけ...
Architectureを''x86_64''にすると64bit出力するコンパイラが...
インストール先は,デフォルトではC:\Program Files以下にイ...
コンパイラの本体は,
- 64bit出力コンパイラの場合~
[インストールしたディレクトリ]\mingw64~
- 32bit出力コンパイラの場合~
[インストールしたディレクトリ]\mingw32~
にインストールされる。
//環境変数のpathに,インストールしたディレクトリ\binを追...
** MSYS2をインストールしてMinGW-w64を追加インストールする
MSYS2はMSYSをより新しくしたPOSIX環境(Posixエミュレーショ...
MSYSと基本的には違いは少ないが,含まれているツール類がよ...
もし既にMSYSを使用している場合でも,''MSYSからMSYS2に移行...
MSYS2をインストールするには,[[公式サイト>https://www.msy...
%%32bit版はmsys2-i686-20190524.exeで,64bit版はmsys2-x86_...
32bit版は2020/05/17からリリースされなくなった。64bit版の...
ダウンロードしたインストーラーをダブルクリックして,イン...
インストール場所は,''C:\msys2 とか C:\msys64''とか,とに...
実は[[Git for Windows>https://gitforwindows.org/]]をイン...
というかGit for WindowsがMSYS2環境を使用して動作している...
MSYS2のパッケージ管理ツールからGitをインストールすること...
*** パッケージ管理ツールからMinGW-w64をインストール
MSYS2がインストールできたら,プログラムメニューからMSYS2...
コマンドプロンプトに似た画面(Bashシェル)が表示されるの...
この時,処理が完了してもプロンプトには戻らないので,強制...
$ pacman -Syu
:
:
警告: terminate MSYS2 without returning to shell and che...
警告: for example close your terminal window instead of ...
再度,MSYS2の''MSYS Shell''を起動して,同じコマンドをもう...
$ pacman -Syu
更新パッケージがあればリストアップされるので,yを入力して...
そして,
$ pacman -Suu
とします。
次にパッケージ管理ツールpacmanを使って,MSYS2にいくつかの...
$ pacman -S base-devel
そして,MinGW-w64(64bitアプリを作成できるtoolchain)をイ...
$ pacman -S mingw-w64-x86_64-toolchain
必要であれば,MinGW-w64(32bitアプリを作成できるtoolchain...
> pacman -S mingw-w64-i686-toolchain
これらのインストール場所は以下のようになる。(MSYS2をC:\m...
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が使えて,MS...
* 環境変数pathの設定
MSYS/MinGWまたはMSYS2/MinGW-w64をインストールしたら,Wind...
- コントロール パネル>システムとセキュリティ>システムをク...
- 詳細設定タブの「環境変数」をクリック~
- システム環境変数(全ユーザーで使用する場合)またはユー...
- 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は,MSYS2 MSYS,MSYS2 MinGW 32bit...
//Git for Windowsで日本語が文字化けしないようにLANG変数を...
//MSYSでのlessコマンドはデフォルトがsjis(dos)のため,ut...
~
そして,ユーザー環境変数(おすすめ)かシステム環境変数のp...
%MINGW_HOME%\bin;%MINGW_HOME%\share;%%MSYS_HOME%\local\b...
を適当な場所に追加する。~
この後,コマンドプロンプトを起動して「gcc --version」と実...
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 condit...
warranty; not even for MERCHANTABILITY or FITNESS FOR A ...
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 condit...
warranty; not even for MERCHANTABILITY or FITNESS FOR A ...
* MSYS/MSYS2の起動と環境
スタートメニューから「MinGW Shell」または「MSYS2 MSYS,MS...
Linux(Unix)と同じPOSIX環境が使用でき,Bashシェルのコン...
この時,カレントディレクトリはユーザーの環境変数HOMEに設...
環境変数HOMEを設定していない場合は,C:\MinGW\msys\1.0\hom...
なので,''環境変数HOMEによく自分が使う作業ディレクトリを...
** ロケール環境
MSYSの場合はPosixコマンド類の日本語コードは,''デフォルト...
しかもMSYSに含まれているコマンドは,ロケール設定に関わら...
$ 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=
$ echo $LESSCHARSET
dos
$ echo $OUTPUT_CHARSET
sjis
MSYS2の場合はPosixコマンド類の日本語コードは,''デフォル...
MSYS2に含まれているコマンドは,ちゃんとロケール設定を反映...
$ 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=
$ echo $LESSCHARSET
dos
$ echo $OUTPUT_CHARSET
dos
なので,''MSYSとMSYS2では使うコンソールのローケール設定に...
コンソール(Terminal)の表示とロケール等が一致していない...
さらにLESSCHARSETとOUTPUT_CHARSET環境変数もうまい具合に設...
- OUTPUT_CHARSET~
アプリケーションがglibcを使っている場合,メッセージカタロ...
- LESSCHARSET~
lessコマンドがファイルを表示するときに使用する文字コード。
[[Git for Windows>/開発/バージョン管理システム/git/Gitの...
このため,Windowsの''コマンドプロンプト''でGit for Window...
''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
bashを使っている場合は,以下のようなaliasにしておく。~
alias git='LANG=ja_JP.UTF-8 LESSCHARSET=utf-8 git'
** MSYS2の環境変数
MSYS2関連の主な環境変数には以下がある。~
細かい挙動については,msys2_shell.cmd(バッチファイル)の...
- MSYS~
''ls -s''等のリンクに関する挙動を決める。~
この設定は,''msys-2.0.dll''を利用するすべてのプログラム...
この環境変数が存在しない場合,シンボリックリンクを作成し...
- MSYSTEM~
MINGW64を指定すると,MSYS2/MinGW-w64の64bit環境向けの環境...
msys2_shell.cmdの''-mingw64''オプションに対応している。詳...
- MSYS2_PATH_TYPE~
''MSYS2_PATH_TYPE=inherit''とすると,シェル環境変数PATHの...
msys2_shell.cmdの''-full-path''オプションに対応している。~
AnacondaのPython含め,Windowsネイティブのコマンドを利用す...
''MSYS2_PATH_TYPE=strict''とすると,Windowsの環境変数PATH...
- CHERE_INVOKING~
''CHERE_INVOKING=1''とすると,Bashログイン時に現在のディ...
msys2_shell.cmdの''-here''オプションに対応している。~
- MSYS2_ARG_CONV_EXCL~
MSYS2はWindowsネイティブなコマンドを実行するとき,コマン...
コマンド引数に指定したパスがこの値と前方一致する場合,こ...
複数指定する場合は,セミコロンで区切る。~
MSYS2コンソールからWindowsのプログラムを別ウィンドウで開...
** Windowsのディレクトリとの対応
*** MSYS/MinGWをインストールした場合
''C:\MinGW\msys\1.0\etc''に,''fstab''というファイルを作...
c:/mingw /mingw
このようにすると,ShellであるBashコンソールを開いた時に,
/ は,C:\MinGW\msys\1.0
/usr は,/と同じでC:\MinGW\msys\1.0
/home/(ユーザー名) は,通常だとC:\Documents and Settings...
/c は,C:\
/mingw は,C:\MinGW (/etc/fstabでマウントされている。)
のようになります。
Bashを起動して確認してみる。
$ mount
C:\Users\yueno\AppData\Local\Temp on /tmp type user (bin...
C:\MinGW\msys\1.0 on /usr type user (binmode,noumount)
C:\MinGW\msys\1.0 on / type user (binmode,noumount)
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での各ドライブなども全て/(ルート)か...
$ ls /
bin etc include lib local m.ico msys.bat msys.ico...
*** MSYS2/MinGW-w64をインストールした場合
''C:\msys64\etc''に''fstab''というファイルがあるので編集...
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を起動して確認してみる。
$ mount
c:/msys64/mingw64 on /mingw64 type ntfs (binary,noacl,po...
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,a...
D: on /d type ntfs (binary,noacl,posix=0,user,noumount,a...
E: on /e type ntfs (binary,noacl,posix=0,user,noumount,a...
S: on /s type ntfs (binary,noacl,posix=0,user,noumount,a...
U: on /u type smbfs (binary,noacl,posix=0,user,noumount,...
X: on /x type smbfs (binary,noacl,posix=0,user,noumount,...
Y: on /y type smbfs (binary,noacl,posix=0,user,noumount,...
Z: on /z type smbfs (binary,noacl,posix=0,user,noumount,...
このように,Windowsでの各ドライブなども全て/(ルート)か...
$ ls /
InstallationLog.txt components.xml maintenancetool.dat...
autorebase.bat dev maintenancetool.exe...
bin etc maintenancetool.ini...
なので,''/etc/fstab(C:\msys64\etc\fstab)''に/mingw64の...
この場合は,以下のようにする。~
MINGW32)
MINGW_MOUNT_POINT="${MINGW_PREFIX}"
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL...
↓
PATH="/c/msys64/mingw32/bin:${MSYS2_PATH}${ORIGINAL_PA...
:
:
MINGW64)
MINGW_MOUNT_POINT="${MINGW_PREFIX}"
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL...
↓
PATH="/c/msys64/mingw64/bin:${MSYS2_PATH}${ORIGINAL_PA...
に,MinGW-w64のgccの場所を実行パスを設定している。こうす...
** カスタマイズ
''/usr/local''がないので,必要であれば作成する。標準的なU...
$ mkdir /usr/local
インストール直後のカレントディレクトリつまり$HOMEは,環境...
環境変数HOMEを作成していればその場所になる。~
/etc/profile(C:\MinGW\msys\1.0\profile)ファイルの最後に...
''/etc/profile''~
export WORK=/c/home/yuji
cd $WORK
* アンインストール
MSYS/MinGWをアンインストールしたい時などは,コントロール...
その後インストールしたディレクトリを削除する。~
MSYS2/MinGW-w64のアンインストールも同様に,コントロールパ...
* 他のパッケージの追加
MSYS/MinGWでパッケージを追加する場合は,コマンドプロンプ...
mingw-get list | less
とすると,追加できるパッケージを見ることが出来る。
MSYS2/MinGW-w64の場合は,パッケージ管理ツールpacmanでパッ...
pacman -h ヘルプ
pacman -<option> -h -<オプション>のヘルプ
pacman -Sy 最新のパッケージデータベース...
pacman -Su パッケージのアップデート(事...
pacman -Syu パッケージのアップデート(-S...
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の雛形
プログラム開発時には,実行ファイルを作成する場合にmakeを...
Makefileの雛形:&ref(Makefile); これをMakefileとしてコピ...
まあ, [[Autotools>/開発/autotools]] や [[CMake>/開発/CMa...
終了行:
*MinGWとは
MinGW(Minimalist GNU for Windows)は,GNUの開発ツール(g...
MinGWはWindows APIのためのヘッダファイルを含んでおり,フ...
コマンドラインから使用することも,各種IDEへ統合することも...
またMinGWのシェル環境というべきMSYS(minimal system)とい...
MSYSには端末エミュレータや開発ツールのautoconfを実行可能...
標準はたぶんMSYSを使うのだろうが,EclipseやWindowsのコマ...
MinGWでコンパイルしたプログラムは,Windowsの標準Cライブラ...
MinGWとMSYSのパッケージは,Cygwinからフォークして誕生した...
CygwinはWindows上に完全なPOSIX環境を提供する事を目的にし...
MinGWはクロス開発環境としても利用でき,これによりマルチプ...
LinuxマシンでもMinGWを使うことでWindowsアプリを開発するこ...
MSYS・MinGWはフリーソフトウェアで,Win32APIを利用するため...
MSYSとMinGWを両方合わせてもファイル容量は比較的小さいので...
Windowsのレジストリなどを全く使用しないので,インストール...
注意することとして,''MinGWはWindowsで動作する32bitアプリ...
''64bitアプリケーションを作成したい時は,MinGWからフォー...
WindowsマシンでMinGWを利用する場合,MinGW(32bitアプリ開...
また,MSYSをより新しくしたMSYS2がリリースされている。~
* MSYS/MinGWのインストール
''MSYSとMinGWは共に古いパッケージなのと,32bitアプリのみ...
64bitアプリを作成したい場合は,後述の''MinGW-w64''をイン...
まだMSYS/MinGWをインストールしてない場合は,''より新しい[...
理由は以下のような理由がある。~
- MSYS2はMSYSより新しい~
- MSYS2はパッケージ管理ツールpacmanでインストールするパッ...
- 他のツールとの互換性~
-- Git for WindowsはMSYS2/MinGW-w64を使用している~
-- Rubyの一部のgemをコンパイルするためにDevkitを使うが,D...
** MSYS/MinGWのインストール(32bit版)
http://sourceforge.net/projects/mingw/ のページにある緑色...
そのダウンロードしたインストーラーを実行する。~
-Repository Catalogues~
Use pre-packaged repository cataloguesを選択する。
-インストールするディレクトリ先の設定~
デフォルトは,「C:\MinGW」。スペースとか日本語は使わない...
-Select Components
C Compier,C++ Compiler,MSYS Basic System,MinGW Develop...
-Installを押して,インストールを実行する。
Finishで終わり。
ちなみに,GCCのバージョンは,6.3.0です。
//**MinGWのインストール(64bit版) [#r0221182]
//
//32/64bit共用のWindows向けMinGWもある。まだインストーラ...
//
//-配布サイトから,書庫化パッケージをダウンロード http://...
//-C:\MinGWあたりに解凍する~
//mingw-w64-bin_x86_64-mingw_20111101_sezero.zipをC:\MinG...
//-シェルなど必要な一式が同梱された「MSYS」をインストール...
//http://sourceforge.net/projects/mingw/files/MSYS/Base/m...
//途中でMinGWのパスを聞かれるので,C:/MinGWを入力する。
//**パスの設定 [#c1e3bb84]
//ツールとして実行できるようにpathを通しておきます。~
//-コントロール パネル>システムとセキュリティ>システムを...
//-詳細設定タブの「環境変数」をクリック~
//-システム環境変数の「Path」を選択して「編集」をクリック~
//-pathを設定する~
//インストール時にデフォルトディレクトリ「C:\MinGW」にし...
//
//この後,コマンドプロンプトを起動し,「gcc --version」と...
**他のMSYSパッケージの追加
コマンドプロンプトで,
mingw-get list | less
とすると,追加できるパッケージを見ることが出来る。
また,MinGW Installerでパッケージの更新も出来る。
* MSYS2/MinGW-w64のインストール
MSYS2は上記の古いMSYSをバージョンアップした,新しいPOSIX...
MinGW-w64は32bitと64bitのどちらのアプリケーションも作成可...
MSYS2とMinGW-w64はそれぞれ別々にインストールすることが出...
なので既にインストールしてある古いMSYSをそのまま使用して...
また,MSYSの代わりに[[MSYS2を新たにインストール>./#cb7537...
** MinGW-w64のみをインストール(64bit版/32bit版)
従来のMSYSをインストールしていてその環境を使って64bitアプ...
MinGW-w64を使って32bitと64bitのコードの両方のプログラムを...
''MSYS/MinGWがインストールされていない場合は,まず[[MSYS2...
この場合は,MinGW-w64のみをインストールはしないようにする...
*** MinGW-w64のみをインストールする
''MinGW-w64のみをインストールするには'', [[公式サイト>ht...
ダウンロードしたインストーラを実行すると,インストールが...
Settings画面で,インストールするGCCのバージョン,アーキテ...
- Version:インストールしたいGCCのバージョンを選択。(特...
- Architecture:ターゲットシステムのアーキテクチャーを選...
-- i686(32bit)かx86_64(64bit)を選択する。~
- Thread : スレッドモデルの選択。posixかwin32を選択する。...
-- posix:POSIXスレッド。Unix,Linux,Windowsをサポートし...
-- win32:WIN32スレッドのみをサポートしている。
win32はWindowsネイティブ関数を使っていて速いのだが,C++ 1...
- Exception:例外処理ハンドリングの選択。アーキテクチャー...
-- i686~
--- dwarf:DWARF~
--- sjlj:SetJump/LongJump~
C++標準ライブラリを使用した例外処理
-- x86_64~
--- seh:Structured Exception Handling~
Windowsネイティブな例外処理。(おすすめ)~
- Build Version:ビルドバージョンの選択。(特に理由がなけ...
Architectureを''x86_64''にすると64bit出力するコンパイラが...
インストール先は,デフォルトではC:\Program Files以下にイ...
コンパイラの本体は,
- 64bit出力コンパイラの場合~
[インストールしたディレクトリ]\mingw64~
- 32bit出力コンパイラの場合~
[インストールしたディレクトリ]\mingw32~
にインストールされる。
//環境変数のpathに,インストールしたディレクトリ\binを追...
** MSYS2をインストールしてMinGW-w64を追加インストールする
MSYS2はMSYSをより新しくしたPOSIX環境(Posixエミュレーショ...
MSYSと基本的には違いは少ないが,含まれているツール類がよ...
もし既にMSYSを使用している場合でも,''MSYSからMSYS2に移行...
MSYS2をインストールするには,[[公式サイト>https://www.msy...
%%32bit版はmsys2-i686-20190524.exeで,64bit版はmsys2-x86_...
32bit版は2020/05/17からリリースされなくなった。64bit版の...
ダウンロードしたインストーラーをダブルクリックして,イン...
インストール場所は,''C:\msys2 とか C:\msys64''とか,とに...
実は[[Git for Windows>https://gitforwindows.org/]]をイン...
というかGit for WindowsがMSYS2環境を使用して動作している...
MSYS2のパッケージ管理ツールからGitをインストールすること...
*** パッケージ管理ツールからMinGW-w64をインストール
MSYS2がインストールできたら,プログラムメニューからMSYS2...
コマンドプロンプトに似た画面(Bashシェル)が表示されるの...
この時,処理が完了してもプロンプトには戻らないので,強制...
$ pacman -Syu
:
:
警告: terminate MSYS2 without returning to shell and che...
警告: for example close your terminal window instead of ...
再度,MSYS2の''MSYS Shell''を起動して,同じコマンドをもう...
$ pacman -Syu
更新パッケージがあればリストアップされるので,yを入力して...
そして,
$ pacman -Suu
とします。
次にパッケージ管理ツールpacmanを使って,MSYS2にいくつかの...
$ pacman -S base-devel
そして,MinGW-w64(64bitアプリを作成できるtoolchain)をイ...
$ pacman -S mingw-w64-x86_64-toolchain
必要であれば,MinGW-w64(32bitアプリを作成できるtoolchain...
> pacman -S mingw-w64-i686-toolchain
これらのインストール場所は以下のようになる。(MSYS2をC:\m...
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が使えて,MS...
* 環境変数pathの設定
MSYS/MinGWまたはMSYS2/MinGW-w64をインストールしたら,Wind...
- コントロール パネル>システムとセキュリティ>システムをク...
- 詳細設定タブの「環境変数」をクリック~
- システム環境変数(全ユーザーで使用する場合)またはユー...
- 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は,MSYS2 MSYS,MSYS2 MinGW 32bit...
//Git for Windowsで日本語が文字化けしないようにLANG変数を...
//MSYSでのlessコマンドはデフォルトがsjis(dos)のため,ut...
~
そして,ユーザー環境変数(おすすめ)かシステム環境変数のp...
%MINGW_HOME%\bin;%MINGW_HOME%\share;%%MSYS_HOME%\local\b...
を適当な場所に追加する。~
この後,コマンドプロンプトを起動して「gcc --version」と実...
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 condit...
warranty; not even for MERCHANTABILITY or FITNESS FOR A ...
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 condit...
warranty; not even for MERCHANTABILITY or FITNESS FOR A ...
* MSYS/MSYS2の起動と環境
スタートメニューから「MinGW Shell」または「MSYS2 MSYS,MS...
Linux(Unix)と同じPOSIX環境が使用でき,Bashシェルのコン...
この時,カレントディレクトリはユーザーの環境変数HOMEに設...
環境変数HOMEを設定していない場合は,C:\MinGW\msys\1.0\hom...
なので,''環境変数HOMEによく自分が使う作業ディレクトリを...
** ロケール環境
MSYSの場合はPosixコマンド類の日本語コードは,''デフォルト...
しかもMSYSに含まれているコマンドは,ロケール設定に関わら...
$ 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=
$ echo $LESSCHARSET
dos
$ echo $OUTPUT_CHARSET
sjis
MSYS2の場合はPosixコマンド類の日本語コードは,''デフォル...
MSYS2に含まれているコマンドは,ちゃんとロケール設定を反映...
$ 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=
$ echo $LESSCHARSET
dos
$ echo $OUTPUT_CHARSET
dos
なので,''MSYSとMSYS2では使うコンソールのローケール設定に...
コンソール(Terminal)の表示とロケール等が一致していない...
さらにLESSCHARSETとOUTPUT_CHARSET環境変数もうまい具合に設...
- OUTPUT_CHARSET~
アプリケーションがglibcを使っている場合,メッセージカタロ...
- LESSCHARSET~
lessコマンドがファイルを表示するときに使用する文字コード。
[[Git for Windows>/開発/バージョン管理システム/git/Gitの...
このため,Windowsの''コマンドプロンプト''でGit for Window...
''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
bashを使っている場合は,以下のようなaliasにしておく。~
alias git='LANG=ja_JP.UTF-8 LESSCHARSET=utf-8 git'
** MSYS2の環境変数
MSYS2関連の主な環境変数には以下がある。~
細かい挙動については,msys2_shell.cmd(バッチファイル)の...
- MSYS~
''ls -s''等のリンクに関する挙動を決める。~
この設定は,''msys-2.0.dll''を利用するすべてのプログラム...
この環境変数が存在しない場合,シンボリックリンクを作成し...
- MSYSTEM~
MINGW64を指定すると,MSYS2/MinGW-w64の64bit環境向けの環境...
msys2_shell.cmdの''-mingw64''オプションに対応している。詳...
- MSYS2_PATH_TYPE~
''MSYS2_PATH_TYPE=inherit''とすると,シェル環境変数PATHの...
msys2_shell.cmdの''-full-path''オプションに対応している。~
AnacondaのPython含め,Windowsネイティブのコマンドを利用す...
''MSYS2_PATH_TYPE=strict''とすると,Windowsの環境変数PATH...
- CHERE_INVOKING~
''CHERE_INVOKING=1''とすると,Bashログイン時に現在のディ...
msys2_shell.cmdの''-here''オプションに対応している。~
- MSYS2_ARG_CONV_EXCL~
MSYS2はWindowsネイティブなコマンドを実行するとき,コマン...
コマンド引数に指定したパスがこの値と前方一致する場合,こ...
複数指定する場合は,セミコロンで区切る。~
MSYS2コンソールからWindowsのプログラムを別ウィンドウで開...
** Windowsのディレクトリとの対応
*** MSYS/MinGWをインストールした場合
''C:\MinGW\msys\1.0\etc''に,''fstab''というファイルを作...
c:/mingw /mingw
このようにすると,ShellであるBashコンソールを開いた時に,
/ は,C:\MinGW\msys\1.0
/usr は,/と同じでC:\MinGW\msys\1.0
/home/(ユーザー名) は,通常だとC:\Documents and Settings...
/c は,C:\
/mingw は,C:\MinGW (/etc/fstabでマウントされている。)
のようになります。
Bashを起動して確認してみる。
$ mount
C:\Users\yueno\AppData\Local\Temp on /tmp type user (bin...
C:\MinGW\msys\1.0 on /usr type user (binmode,noumount)
C:\MinGW\msys\1.0 on / type user (binmode,noumount)
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での各ドライブなども全て/(ルート)か...
$ ls /
bin etc include lib local m.ico msys.bat msys.ico...
*** MSYS2/MinGW-w64をインストールした場合
''C:\msys64\etc''に''fstab''というファイルがあるので編集...
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を起動して確認してみる。
$ mount
c:/msys64/mingw64 on /mingw64 type ntfs (binary,noacl,po...
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,a...
D: on /d type ntfs (binary,noacl,posix=0,user,noumount,a...
E: on /e type ntfs (binary,noacl,posix=0,user,noumount,a...
S: on /s type ntfs (binary,noacl,posix=0,user,noumount,a...
U: on /u type smbfs (binary,noacl,posix=0,user,noumount,...
X: on /x type smbfs (binary,noacl,posix=0,user,noumount,...
Y: on /y type smbfs (binary,noacl,posix=0,user,noumount,...
Z: on /z type smbfs (binary,noacl,posix=0,user,noumount,...
このように,Windowsでの各ドライブなども全て/(ルート)か...
$ ls /
InstallationLog.txt components.xml maintenancetool.dat...
autorebase.bat dev maintenancetool.exe...
bin etc maintenancetool.ini...
なので,''/etc/fstab(C:\msys64\etc\fstab)''に/mingw64の...
この場合は,以下のようにする。~
MINGW32)
MINGW_MOUNT_POINT="${MINGW_PREFIX}"
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL...
↓
PATH="/c/msys64/mingw32/bin:${MSYS2_PATH}${ORIGINAL_PA...
:
:
MINGW64)
MINGW_MOUNT_POINT="${MINGW_PREFIX}"
PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}${ORIGINAL...
↓
PATH="/c/msys64/mingw64/bin:${MSYS2_PATH}${ORIGINAL_PA...
に,MinGW-w64のgccの場所を実行パスを設定している。こうす...
** カスタマイズ
''/usr/local''がないので,必要であれば作成する。標準的なU...
$ mkdir /usr/local
インストール直後のカレントディレクトリつまり$HOMEは,環境...
環境変数HOMEを作成していればその場所になる。~
/etc/profile(C:\MinGW\msys\1.0\profile)ファイルの最後に...
''/etc/profile''~
export WORK=/c/home/yuji
cd $WORK
* アンインストール
MSYS/MinGWをアンインストールしたい時などは,コントロール...
その後インストールしたディレクトリを削除する。~
MSYS2/MinGW-w64のアンインストールも同様に,コントロールパ...
* 他のパッケージの追加
MSYS/MinGWでパッケージを追加する場合は,コマンドプロンプ...
mingw-get list | less
とすると,追加できるパッケージを見ることが出来る。
MSYS2/MinGW-w64の場合は,パッケージ管理ツールpacmanでパッ...
pacman -h ヘルプ
pacman -<option> -h -<オプション>のヘルプ
pacman -Sy 最新のパッケージデータベース...
pacman -Su パッケージのアップデート(事...
pacman -Syu パッケージのアップデート(-S...
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の雛形
プログラム開発時には,実行ファイルを作成する場合にmakeを...
Makefileの雛形:&ref(Makefile); これをMakefileとしてコピ...
まあ, [[Autotools>/開発/autotools]] や [[CMake>/開発/CMa...
ページ名:
Counter: 0, today: 0, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
フォーラム
お問い合わせ