Windows   11   Arm64

ホーム  
目次

Arm64 開発環境設定

おおげさなタイトルですが、Apple sillicon Mac と Parallels Desktop を使って、いろいろな Arm64 OS に開発環境を設定していこうという、覚え書きのようなコーナーです。
今は一つですが、じょじょに増やしていきます。

Windows   11   Arm64 の入手方法

Parallels Desktop の「新規作成」で「MicrosoftからWindows 11を入手」を選ぶと、 Windows 11 Pro Arm64 がインストールされます。

また、こちらの Download Windows 11 Arm64 からマルチエディション版をダウンロードすることができます。ProにするかHomeにするかはインストール時に選べます。

なお、これらにはプロダクトキーは付いていませんので、別途入手する必要があります。プロダクトキーがなくても一応動作はしますが、いくつかの制限がかかっています。そして何よりも Windows はプロダクトキーを買うライセンスになっています。 次のところで 1980円で売っていました。メディアは付いていませんので、上記の方法でダウンロードする必要があります。プロダクトキーは Home 版と Pro 版の区別はありますが、Arm 版と通常版の区別はありません。普通のプロダクトキーが Arm 版でも使えます。
マイクロソフト Windows 11 Professional プロダクトキー [Microsoft] 1PC/ダウンロード版 | 永続ライセンス・日本語版 : ALL KEY SHOP JAPAN - 通販 - Yahoo!ショッピング
もっと安いところもありましたが、怖かったので、私はこれにしました。 Home版は1790円で売っていました。
マイクロソフト Windows 11 Home プロダクトキー [Microsoft] 1PC/ダウンロード版 | 永続ライセンス・日本語版 : ALL KEY SHOP JAPAN - 通販 - Yahoo!ショッピング
また、Home版をインストールしていても、Pro版のプロダクトキーを入力すると、Pro 版として動作するという話もあります。試していないので、真偽のほどは分かりません



C / C++ の設定

ここからは Environment Windows 11 Arm64 と全く同じ記事になります。


今回も Msys2 を介して MinGW をインストールします。

次のリンクから msys2-x86_64-20230127.exe をダウンロードしてください。それ以外は Windows 11 Arm64 が正式なファイルと認識しないみたいです。

Index of /distrib/x86_64/ MSYS2

インストールする場所はデフォルトの C:\msys64 にします。

インストールすると、Msys2 のコンソールが自動的に開くと思いますが、それは閉じてください。そして、C:\msys64 の中の clangarm64.exe を開いてください。これが Arm64 に対応した msys2 です。しばらく使うと思うので、スタートメニューかタスクバーにピン止めしておいてください。そしてコンソールに次のようにコマンドして、Arm64 対応と C / C++ をインストールしていきます。


        // pacman パッケージマネージャーの初期化とアップデート
        pacman -Suy

        // Arm64 対応パッケージのインストール
        pacman -S mingw-w64-clang-aarch64-clang

        // C および C++ コンパイラのインストール
        pacman -S mingw-w64-x86_64-toolchain
    

pacman は Msys2 のパッケージマネージャです。C と C++ は、C:\msys64\mingw64\bin にインストールされます。インストールが終わりましたらコンソールを閉じてください。
そして今度は、C:\msys64 の中の mingw64.exe を開きます。こちらも今後よく使うので、スタートメニューかタスクバーにピン止めしておくと良いでしょう


// インストールされた C のバージョンを確認します。
$ gcc --version
gcc.exe (Rev3, Built by MSYS2 project) 14.2.0
Copyright (C) 2024 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.

// インストールされた C++ のバージョンを確認します。
$ g++ --version
g++.exe (Rev3, Built by MSYS2 project) 14.2.0
Copyright (C) 2024 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.
    

msys2.exe と mingw64_.exe は役割が違います。

  1. pacman を使う場合は、msys2.exe(今回の場合はclangarm64.exe)を使います。
  2. その他の作業をする場合は、mingw64.exe を使います。
  3. mingw32.exe は、64bit コンピュータでも、開くことはできますが、正常には動作するかどうかは試していません。

msys2.exe を使うのは、何かのパッケージをインストールする時だけです。
よく使う mingw64.exe の方をスタートメニューに登録するか、タスクバーに登録すると良いでしょう。
新しいバージョンの Msys2 では、すべての作業を msys2.exe で行えるようになっているという話もありますが、一応上記のことを守って作業していきます。

なお、Msys2 の新しいバージョンでは、Msys2 に emacs をインストールすることができます。msys2.exe(今回の場合はclangarm64.exe)を開いて次のようにコマンドしてください。


pacman -S emacs
    

emacs で何かの作業をする場合は、mingw64.exe を開きます。


// バージョン確認
$ emacs --version
GNU Emacs 29.4
Copyright (C) 2024 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

// emacs で *~ とか #* というバックアップファイルを作らないようにするには、
// ホームディレクトリに .emacs というファイルを作ります。
// mingw64.exe を開いた場所がホームディレクトリです。
emacs .emacs

// そのファイルに次のように記述します。
(setq make-backup-files nil)
(setq auto-save-default nil)
    

Windows API

これで、Windows API プログラミングをする準備が整いました。
次のコードを記述して、C:\msys64\home\ユーザー名 に保存してください。

hello.c


#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int     WINAPI   WinMain(HINSTANCE hInstance,
			 HINSTANCE hPrevInstance,
			 LPSTR     lpCmdLine,
			 int       nCmdShow)
{
  WNDCLASS wc;
  HWND     hwnd;
  MSG      msg;

  wc.style         = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc   = WndProc;
  wc.cbClsExtra    = 0;
  wc.cbWndExtra    = 0;
  wc.hInstance     = hInstance;
  wc.hIcon         = NULL;
  wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1;
  wc.lpszMenuName  = NULL;
  wc.lpszClassName = TEXT("WINDOW");

  RegisterClass(&wc);

  hwnd             = CreateWindow(TEXT("WINDOW"),
				  TEXT("Hello Windows API!"),
				  WS_OVERLAPPEDWINDOW | WS_VISIBLE,
				  CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
				  NULL, NULL, hInstance, NULL);

  while (GetMessage(&msg, NULL, 0, 0))
    {
      DispatchMessage(&msg);
    }

  return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch (msg)
    {
    case WM_DESTROY:
      PostQuitMessage(0);
      break;
    }

  return DefWindowProc(hwnd, msg, wParam, lParam);
}
    


コンパイルと実行

mingw64.exe を開きます。コンソールが開いた場所が C:\msys64\home\ユーザー名 になっています。


// コンパイル
gcc hello.c -o hello -mwindows

// 実行
./hello
    

C:\msys64\home\ユーザー名 に出来上がった hello.exe をダブルクリックしても実行できます。hello.exe をデスクトップなどに移動してダブルクリックしても実行できます。


実行結果



コマンドプロンプトでのコンパイルと実行

次のパスを環境変数に登録すると、コマンドプロンプトでもコンパイルと実行ができるようになります。また、wxWidgetws や GTK で作成した exe ファイルをダブルクリックで実行する場合にも次のパスの登録が必要になりますので、ぜひ登録してください。
C:\msys64\mingw64\bin;

パスの登録が終わりましたら、先ほどの hello.c をお好きな場所に保存してください。そしてコマンドプロントを起動して、hello.c を保存したディレクトリに移動し、次のようにコマンドして、コンパイルと実行をします。


// コンパイル
gcc hello.c -o hello -mwindows

// 実行
hello
    

出来上がった hello.exe をダブルクリックしても実行できます。hello.exe をデスクトップなどに移動してダブルクリックしても実行できます。



wxWidgets

wxWidgets も、Msys2 を使ってインストールします。

まず make というコマンドをインストールしておきます。clangarm64.exe を開いて、次のようにコマンドしてください。


// インストール
pacman -S make

// バージョン確認
$ make --version
GNU Make 4.4.1
Built for x86_64-pc-msys
Copyright (C) 1988-2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

    

インストールが終わりましたらコンソールを閉じてください。

そして、次のリンクから Latest Stable Release: 3.2.6 の Windows ZIP をダウンロードします。

Downloads - wxWidgets

ダウンロードされた wxWidgets-3.2.6.zip を C:\wxWidgets-3.2.6 に展開します。そして今度は、mingw64.exe を開いて次のようにコマンドします。


// wxWidgets のディレクトリに移動します
cd C:/wxWidgets-3.2.6

// wxWidgets をコンフィギュア(環境設定)します
./configure --disable-shared --enable-unicode
    

次のように表示されればコンフィギュアは成功です。


    Configured wxWidgets 3.2.6 for `x86_64-w64-mingw32'

Which GUI toolkit should wxWidgets use?                 msw
Should wxWidgets be compiled into single library?       no
Should wxWidgets be linked as a shared library?         no
Should wxWidgets support Unicode?                       yes (using wchar_t)
What level of wxWidgets compatibility should be enabled?
                                     wxWidgets 2.8      no
                                     wxWidgets 3.0      yes
Which libraries should wxWidgets use?
                                     STL                no
                                     jpeg               builtin
                                     png                builtin
                                     regex              builtin
                                     tiff               builtin
                                     lzma               no
                                     zlib               sys
                                     expat              sys
                                     libmspack          no
                                     sdl                no
    

続いて make と make install をします。


// make します。make は時間がかかります。
make

// make[1]: Leaving directory '/c/wxWidgets-3.2.6/utils/wxrc'
と表示されれば make は成功しています。続けてインストールします。

make install

// 次のように表示されればインストール成功です
------------------------------------------------------

The installation of wxWidgets is finished.  On certain
platforms (e.g. Linux) you'll now have to run ldconfig
if you installed a shared library and also modify the
LD_LIBRARY_PATH (or equivalent) environment variable.

wxWidgets comes with no guarantees and doesn't claim
to be suitable for any purpose.

Read the wxWindows Licence on licencing conditions.

------------------------------------------------------

// ホームディレクトに戻ります。
cd

// バージョンを確認します
wx-config --version
3.2.6
    


これで、wxWidgets プログラミンができるようになりました。次のコードを記述して、C:\msys64\home\ユーザー名 に保存してください。

hello.cpp


#include <wx/wx.h>

class Hello : public wxFrame
{
public:
    Hello();
};

class App : public wxApp
{
public:
    virtual bool OnInit();
};

Hello::Hello() : wxFrame(NULL, -1, wxT("Hello wxWidgets!"),
                         wxDefaultPosition, wxSize(300, 200))
{
    Center();
}

IMPLEMENT_APP(App)

bool App::OnInit()
{
    Hello *hello = new Hello();
    hello->Show();
    
    return true;
}
    


コンパイルと実行

mingw64.exe のコンソールを開いて、次のようにコマンドしてコンパイルします。


// コンパイル
g++ hello.cpp `wx-config --cppflags --libs` -o hello -mwindows

// 実行
 ./hello
    

C:\msys64\home\ユーザー名 を開いて hello.exe をダブルクリックして実行することができます。hello.exe をデスクトップなどへ移動してもダブルクリックで実行できます。


実行結果



GTK

GTK も Msys2 を使ってインストールします。

clangarm64.exe を起動して、次のようにコマンドして GTK をインストールします。GTK は C:\msys64\mingw64\bin にインストールされます。


// gtk2 のインストール
pacman -S mingw-w64-x86_64-gtk2

// gtk3 のインストール
pacman -S mingw-w64-x86_64-gtk3
    

これで GTK プログラミンができるようになりました。次のコードを記述して\msys64\home\ユーザー名 に保存してください。

hello.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget * window;
    
    gtk_init(&argc, &argv);
    
    window = gtk_window_new    (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title       (GTK_WINDOW(window), "Hello GTK!");
    gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
    gtk_window_set_position    (GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    
    gtk_widget_show(window);
    gtk_main();
    return 0;
}
    


コンパイルと実行

mingw64.exe を開いて次のようにコマンドします。


// gtk2 でのコンパイル
// gtk2 でのコンパイルは、かなりの量の警告が表示されます
// エラーではないのでコンパイルは完了しています
gcc hello.c `pkg-config --cflags --libs gtk+-2.0` -o hello -mwindows

// gtk3 でのコンパイル
gcc hello.c `pkg-config --cflags --libs gtk+-3.0` -o hello -mwindows

// 実行
./hello
    

出来上がった hello.exe をダブルクリックしても実行できます。hello.exe をデスクトップなどに移動してダブルクリックしても実行できます。


実行結果

gtk2 gtk3


201 visits
Posted: Mar. 11, 2025
Update: Mar. 14, 2025

ホーム