新下载的MinGW GCC编译C代码时报`__chkstk_ms`未定义引用错误
该报错由当前安装的3.4.5版本MinGW的组件版本不匹配导致,__chkstk_ms是栈检查功能的依赖符号,旧版MinGW的libmingw32、libmingwex库没有包含该符号的实现,链接时就会触发未定义引用错误。
可通过以下方法解决:
- 卸载旧版MinGW:删除原MinGW安装目录,清除系统环境变量Path中关联旧MinGW的条目,避免残留文件干扰后续安装
- 更换使用MinGW-w64:该发行版维护活跃,支持32/64位程序编译,无该类旧版本兼容问题。下载对应架构的离线包后解压到无中文、无空格的路径(如
C:\mingw64),注意解压路径不要包含中文或空格,避免编译时出现路径识别错误,将解压后路径下的bin文件夹地址添加到系统环境变量Path,打开命令提示符执行gcc -v确认版本生效即可 - 调整Code Runner扩展配置:打开VS Code设置搜索
code-runner.executorMap,修改C语言对应的执行命令为gcc $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe,确保调用新版gcc编译 - 临时兼容方案:如果暂时不想更换MinGW版本,可在编译命令末尾添加参数
-lgcc,强制链接gcc核心库补全缺失的符号定义,即可正常完成编译
内容的提问来源于stack exchange,提问作者Swagrim
相关产品推荐
相关产品推荐

