3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

msys2でucrtのランタイムを使おう!ようこそucrt64

Last updated at Posted at 2021-04-19

ucrtとは

Universal CRT へのコードのアップグレード | Microsoft Docs

ここに解説があるが要約する。

まずプログラムを動かすにあたり、少なくともCのランタイムライブラリが必要になる。これはmsvcrtがこれまで用いられてきた

Visual Studio 2015でC lintimeのリファクタリングが行われ、様々な機能が追加された。例えばstrtodでの浮動小数点のパースの改善とかstd::quick_exitの対応とかそういうのだ。これをUniversal C Runtime、ucrtと呼ぶ。

msys2でもこのucrtに対応する動きが見られている。

msys2におけるucrt対応

わりとひっそりと行われている。

https://github.com/msys2/MINGW-packages/issues/6901

あたりが該当するissueにようにおもえる。

何回かpacman -Syuuで更新し続けているとそのうちmsys64直下にucrt64.exe/``ucrt64.ico`が生えていく。
image.png

まだ駆け出しのプロジェクトでパッケージ側も対応していないものもある(私のパッケージもなんとかしないと・・・)。

トラブルシューティング

ucrt64.exe/``ucrt64.ico`がない!

pacman -Syuuで更新し続けましょう。そのうち生えます。該当するパッケージは
https://packages.msys2.org/package/msys2-launcher?repo=msys&variant=x86_64
これです。

pacman -Syuuでucrt64を見に行っている様子がないが?

$pacman -Syuu
:: パッケージデータベースの同期中...
 mingw32 は最新です
 mingw64 は最新です
 ucrt64 は最新です
 msys は最新です

のようになっているのが望ましい状態だがucrt64がないぞという場合もある

/etc/pacman.confを確認する

[mingw32]
Include = /etc/pacman.d/mirrorlist.mingw32

[mingw64]
Include = /etc/pacman.d/mirrorlist.mingw64

[ucrt64]
Include = /etc/pacman.d/mirrorlist.ucrt64

[msys]
Include = /etc/pacman.d/mirrorlist.msys

上のようなのが含まれているのが望ましいが、ucrt64の項目がないかもしれない。その場合は手動で付け加える。

/etc/pacman.d/mirrorlist.ucrt64を確認する

そもそもないかもしれない。そういう場合は/etc/pacman.d/mirrorlist.minw64をコピーして作成して、各URLの末尾をucrt64に置換すればよい

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?