2023-03-22
MinGW - Minimalist GNU for Windows
https://ja.osdn.net/projects/mingw/
を使えば、gcc, g++をはじめとするGNUソフトウェアがWindowsのPowerShellで実行できるようになる。(コマンドプロンプトでもいいが文字コードがShift_JIS以外は文字化けする)
インストール
上記サイトの中央に「mingw-get-setup.exe」リンクがあるので、クリックしてダウンロード、実行する。
MinGW自体はパッケージマネージャーである。C:\MinGWに、カラのディレクトリがセットアップされる。
デスクトップに「MinGW Installer」ができるので、実行する。
MinGW Installation Managerが立ち上がる。
今回の目的としては、gcc/g++の実行・コンパイル・テストであるので、最低限のインストールにする。
左タブで「Basic Setup」を選び、右タブのパッケージリストでは「mingw32-base-bin」「mingw32-gcc-g++-bin」を選び「Mark for Installation」でチェックを入れる。
メニューバー「Installation」→「Apply Changes」→「Apply」で決定し、パッケージのインストールを開始する。
終わると、「C:\MinGW」以下に、bin, include, lib, libexec, share, varといったUnix usr/localチックなディレクトリと、bin以下にはgcc/g++/gdb本体がインストールされていることが確認できる。
環境変数にパスを通す
このbinにパスを通せば、コマンドプロンプトからgccなどと打てる。
コントロールパネル→システムとセキュリティ→システム→右端の関連設定「システムの詳細設定」→「環境変数」→「システム環境変数」→「Path」→「編集」
とし、「新規」で「C:\MinGW\bin」を追加して、これまで開いたウインドウすべてで「OK」で閉じる。
ソースプログラムを書く
準備はできたので、適当なC++プログラムを書く。以下、vectorにstringを入れてcoutする例。
C/C++ | hello_vector.cpp | GitHub Source |
#include <iostream> #include <vector> #include <string> using namespace std; int main(void) { vector<string> vec = vector<string>(); vec.push_back(string("はろーわーるど")); cout << vec.front() << endl; return 0; }
例として上記ソースをデスクトップに文字コードUTF-8/改行コードLFで保存した。
Windows PowerShellでコンパイル、実行
スタートメニュー→Windows PowerShell→Windows PowerShell を開く。
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\Users\hogeuser> cd Desktop PS C:\Users\hogeuser\Desktop> g++ hello_vector.cpp -o hello_vector.exe PS C:\Users\hogeuser\Desktop> ./hello_vector.exe はろーわーるど PS C:\Users\hogeuser\Desktop>
無事コンパイル、実行できた。
他の拡張パッケージを使う
たとえばlibiconvを使いたい場合
MinGW Installation Manager→All Packages→MinGW→MinGW Base System→MinGW Standard Libraries→mingw32-libiconv-devなどと探してチェックを入れ、Apply Changes でインストール。
libにlibiconv.a、includeにiconv.hが入る。OpenSSLは本家サイトでソースをダウンロードしてこのMinGWでコンパイルするしかなさそうだが、それはまだ試せていない。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
HomeBrewでApache2を入れて自動起動つきで動かしPHPモジュールと連携する
macOSに標準付属のApacheを自動起動つきで動かす
HomeBrewでPostgreSQLを入れて自動起動つきで動かす
Windows11でSSHポートフォワードでSamba(139)ポートをbindできないエラー
システムで予約済みのパーティションを更新できませんでした このPCは現在Windows11のシステム要件を満たしていません
ソースからインストールしたPHPにPDO版MySQLとPostgreSQLを組み込む
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows版Google Driveが使用中と言われアンインストールできない場合
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
LinuxからWindowsの共有フォルダをマウントする
【MinGW】Windowsでgcc/g++コンパイラを使って開発する
【Apache】サーバーに同時接続可能なクライアント数を調整する
Googleスプレッドシートを編集したら自動で更新日時を入れる
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする