MSYS環境でGCCを使用する際に、デフォルトではローカライズサポートが無効になっています。これにより、コンパイル時のエラーメッセージは英語のみとなります。
// エラーを含むCコードの例
#include <stdio.h>
int main(){
int a = 1;
n b = 2;
d c = 1.1;
p("Hello world!\n");
return v;
}
このコードをコンパイルすると以下のエラーメッセージが出力されます:
~ gcc main.c -o main
main.c: In function 'main':
main.c:5:9: error: unknown type name 'n'; did you mean 'int'?
5 | n b = 2;
| ^
| int
main.c:6:9: error: unknown type name 'd'; did you mean 'double'?
6 | d c = 1.1;
| ^
| double
main.c:7:9: error: implicit declaration of function 'p'; did you mean 'printf'? [-Wimplicit-function-declaration]
7 | p("Hello world!\n");
| ^
| printf
main.c:8:16: error: expected expression before 'v'
8 | return v;
|
GCCの構成パラメータを確認します:
~ gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys64\ucrt64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-15.2.0/configure --prefix=/ucrt64 --with-local-prefix=/ucrt64/local --with-native-system-header-dir=/ucrt64/include --libexecdir=/ucrt64/lib --enable-bootstrap --enable-checking=release --with-arch=nocona --with-tune=generic --enable-mingw-wildcard --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-backtrace=yes --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --disable-libstdcxx-pch --enable-lto --enable-libgomp --disable-libssp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/ucrt64 --with-mpfr=/ucrt64 --with-mpc=/ucrt64 --with-isl=/ucrt64 --with-pkgversion='Rev11, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --with-libstdcxx-zoneinfo=yes --disable-libstdcxx-debug --enable-plugin --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.2.0 (Rev11, Built by MSYS2 project)
この出力から、--disable-nlsオプションが指定されていることが確認できます。これを有効にするためには、GCCを再ビルドし、--enable-nlsオプションを追加する必要があります。
MSYS公式パッケージスクリプトのダウンロード
以下のリンクからMSYS2のパッケージリポジトリをクローンするかZIPファイルをダウンロードします:msys2-packages
ダウンロードした後、gccディレクトリに移動し、PKGBUILDファイルを開きます。build()関数内のconfigureコマンドに--enable-nlsオプションを追加します:
${srcdir}/gcc-${pkgver}/configure \
--build=${CHOST} \
--prefix=/usr \
--libexecdir=/usr/lib \
--enable-bootstrap \
--enable-static \
--enable-shared \
--enable-shared-libgcc \
--enable-version-specific-runtime-libs \
--with-arch=${_arch} \
--with-tune=generic \
--disable-multilib \
${_arch_conf} \
--enable-__cxa_atexit \
--with-dwarf2 \
--enable-languages=c,c++,lto \
--enable-graphite \
--enable-threads=posix \
--enable-libatomic \
--enable-libgomp \
--disable-libitm \
--enable-libquadmath \
--enable-libquadmath-support \
--disable-libssp \
--disable-win32-registry \
--disable-symvers \
--with-gnu-ld \
--with-gnu-as \
--disable-isl-version-check \
--enable-checking=release \
--without-libiconv-prefix \
--without-libintl-prefix \
--with-system-zlib \
--enable-linker-build-id \
--enable-libstdcxx-filesystem-ts \
--enable-nls # ローカライズサポートを有効化
ソースファイルのダウンロードが遅い場合は、source部分を以下のURLに変更して清华大学ミラーサイトを利用します:
元のURL:
source=(https://ftp.gnu.org/gnu/gcc/gcc-${pkgver}/gcc-${pkgver}.tar.xz
変更後:
source=(https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-${pkgver}/gcc-${pkgver}.tar.xz
または、清华大学ミラーサイトから最新のソースパッケージを手動でダウンロードし、gccディレクトリにコピーします。GCC 清华ミラーサイト
修正後、MSYS2ターミナルで以下のコマンドを実行します:
MINGW_ARCH=ucrt64 makepkg-mingw -s -i
必要なビルド依存関係をインストールした後、ビルドとインストールが完了するまで待ちます。ビルドに数時間かかる可能性があります。
ビルドが完了したら、新たにコンパイルしたGCCを使用して以下を実行します:
~ gcc -v
使用内建 specs。
COLLECT_GCC=C:\msys64\ucrt64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/ucrt64/lib/gcc/x86_64-w64-mingw32/15.2.0/lto-wrapper.exe
目標:x86_64-w64-mingw32
配置为:../gcc-15.2.0/configure --prefix=/ucrt64 --with-local-prefix=/ucrt64/local --with-native-system-header-dir=/ucrt64/include --libexecdir=/ucrt64/lib --enable-bootstrap --enable-checking=release --with-arch=nocona --with-tune=generic --enable-mingw-wildcard --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-backtrace=yes --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --disable-libstdcxx-pch --enable-lto --enable-libgomp --disable-libssp --disable-multilib --disable-rpath --disable-win32-registry --enable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/ucrt64 --with-mpfr=/ucrt64 --with-mpc=/ucrt64 --with-isl=/ucrt64 --with-pkgversion='Rev11, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --with-libstdcxx-zoneinfo=yes --disable-libstdcxx-debug --enable-plugin --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++
線程モデル:posix
サポートの LTO 圧縮アルゴリズム:zlib zstd
gcc バージョン 15.2.0 (Rev11, Built by MSYS2 project)
新しいGCCを使用すると、コンパイルエラーメッセージが日本語で表示されるようになります。ただし、最新のGCCバージョンでは一部のメッセージがまだ翻訳されていない場合があります。