当前位置: 首页 > news >正文

MSYS 环境下 GCC 启用本地化支持

MSYS 环境下 GCC 启用本地化支持

msys 环境下的 gcc 打包时没有启用本地化支持,因此编译输出信息只有英文:

// 一份包含若干错误的 C 代码
#include <stdio.h>int main(){int a = 1;in b = 2;doubl c = 1.1;printff("Hello world!\n");return void;
}

编译输出:

➜  ~ gcc main.c -o main
main.c: In function 'main':
main.c:5:9: error: unknown type name 'in'; did you mean 'int'?5 |         in b = 2;|         ^~|         int
main.c:6:9: error: unknown type name 'doubl'; did you mean 'double'?6 |         doubl c = 1.1;|         ^~~~~|         double
main.c:7:9: error: implicit declaration of function 'printff'; did you mean 'printf'? [-Wimplicit-function-declaration]7 |         printff("Hello world!\n");|         ^~~~~~~|         printf
main.c:8:16: error: expected expression before 'void'8 |         return void;| 

查看 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-packages

去上述链接的 git 仓库,clone 仓库或下载 zip 包,进入 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 中的链接为清华源:

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

也就是把 gnu 前缀修改为清华镜像源。

或者手动去清华镜像源下载最新的源码包(注意后缀为 xz ),复制到 gcc 文件夹中即可,地址 GCC 清华镜像源

保存,然后在 msys2 终端中执行:

MINGW_ARCH=ucrt64 makepkg-mingw -s -i

首先根据提示安装构建依赖,然后静待构建完成后安装即可,需要较长时间(在我的电脑上花了四个小时)。构建完成后会生成一系列软件包,只需要安装 gcc 即可。

安装自行编译的 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版本较新,可能会出现汉化不完全的情况。

http://www.jsqmd.com/news/418236/

相关文章:

  • Python基于Vue的游戏创意工坊与推广平台的设计与实现 django flask pycharm
  • AI原生应用领域多轮对话在游戏中的创新玩法设计
  • ‌2026年软件测试热度制高点:KubeVirt混合快照管理的实战指南
  • Python基于Vue的甜品店管理系统 django flask pycharm
  • 深度学习--卷积神经网络之调整学习率
  • go基础之逻辑运算与条件判断(中)
  • WPF 的 DPI 机制
  • AI Agent框架探秘:拆解 OpenHands(9)--- AgentController
  • 《白色相簿2》《一泊二日の凯旋》听后感
  • Windows 下 DPI 渲染
  • 一文看透!AI应用架构师在智能金融系统设计的策略布局
  • 一天一个开源项目(第35篇):GitHub Store - 跨平台的 GitHub Releases 应用商店
  • 开工有礼!获悉Bonree ONE新动态,申请试用领“小睿”新周边!
  • python基于 flask 的流浪动物收养系统设计与开发-vue pycharm django
  • 电脑蓝屏故障与swkb.sys文件问题的解决指南
  • [豪の算法奇妙冒险] 代码随想录算法训练营第四十八天 | 739-每日温度、496-下一个更大元素Ⅰ、503-下一个更大元素Ⅱ
  • 告别JSON!Anthropic发布Tool Calling 2.0,Agent上下文消耗骤降80%
  • 【PowerBI专栏】PowerBI的数据保留与删除操作
  • 杭州脱发自救指南:植发还是纹发?看这篇就懂! - 品牌测评鉴赏家
  • 杭州植发机构大揭秘:脱发星人的逆袭指南 - 品牌测评鉴赏家
  • 【数据分析】python探究云量变化对植被生产力的影响
  • 2026年专业深度测评:中国排名前5的geo优化公司权威榜单 - 电商资讯
  • 广州十大植发机构推荐✅美发博主实测!脱发星人避坑不花冤枉钱 - 品牌测评鉴赏家
  • glTF/glb:现在与未来
  • 2026年专业深度测评:中国排名前五的geo优化公司权威榜单 - 电商资讯
  • python+flask的药膳食谱管理系统-vue pycharm django
  • 毕业季救命指南:用 AI 快速搞定论文初稿,不被导师看穿
  • 20260227 模拟测 总结
  • Python+flask爬虫电影信息分类管理与推荐系统 数据可视化大屏分析系统_b7vq98d8-vue pycharm django
  • 广州植发机构实测|告别脱发尴尬,焊死精致发际线 - 品牌测评鉴赏家