尝试编译 C 代码时出现 Mingw 错误

MingGw error while trying to complie C code

我试图将我的 C 代码(使用 mingw)编译成一个 EXE 文件,但它只是提示以下错误:

/mingw/lib/libmingw32.a(setargv.o):(.text+0x33): undefined reference to `__chkstk_ms' /mingw/lib/libmingwex.a(glob.o):(.text+0x6d2): undefined reference to `__chkstk_ms' /mingw/lib/libmingwex.a(glob.o):(.text+0x8b8): undefined reference to `__chkstk_ms' /mingw/lib/libmingwex.a(glob.o):(.text+0x900): undefined reference to `__chkstk_ms' /mingw/lib/libmingwex.a(glob.o):(.text+0xa25): undefined reference to `__chkstk_ms' /mingw/lib/libmingwex.a(glob.o):(.text+0xc15): more undefined references to `__chkstk_ms' follow collect2: ld returned 1 exit status

i 运行 命令

mingw-get upgrade "mingwer=3.20.*"

mingw-get upgrade "mingwer=3.18.*"

但没有解决问题

编辑: 命令运行

gcc compvisia.c init.c bitboards.c hashkeys.c board.c -o compvisia

代码:

#include "stdio.h"
#include "stdlib.h"

int main() {
   printf("hello world");
   return 0;
}

看起来错误与堆栈保护有关。

可能您的系统混合安装了不同的 MinGW 版本,导致链接到不匹配的库。

MinGW 3 很旧,你真的应该考虑迁移到 MinGW-w64。

您可以从 https://winlibs.com/ 获得独立构建的 MinGW-w64,您可以将其提取到某处而无需安装以测试它是否对您的源代码有影响。

确保使用 gcc.exe 的完整路径,这样您实际上使用的是您认为正在使用的路径。