Windows(MSYS2)构建的OpenOCD无法创建套接字



我已经从 https://github.com/gnu-mcu-eclipse/openocd 克隆了openOCD 并使用MSYS2(MINGW32(外壳构建它。构建通过没有任何问题,当尝试执行时,它失败并给出错误"错误:创建套接字时出错"。

我启用了调试选项,发现它来自server.c文件。 我正在使用64位Windows 10 PC进行构建。

错误来自下面的代码段,

c->fd = socket(AF_INET, SOCK_STREAM, 0);
if (c->fd == -1) {
LOG_ERROR("error creating socket: %s", strerror(errno));
exit(-1);
}

我注意到必须为 WIN32 构建启用的宏尚未启用,如果启用,则会调用 Windows 特定的套接字函数。

int server_preinit(void)
{
/* this currently only calls WSAStartup on native win32 systems
* before any socket operations are performed.
* This is an issue if you call init in your config script */
#ifdef _WIN32
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2, 2);
if (WSAStartup(wVersionRequested, &wsaData) != 0) {
LOG_ERROR("Failed to Open Winsock");
exit(-1);
}
/* register ctrl-c handler */
SetConsoleCtrlHandler(ControlHandler, TRUE);
signal(SIGINT, sig_handler);
signal(SIGTERM, sig_handler);
signal(SIGBREAK, sig_handler);
signal(SIGABRT, sig_handler);
#endif
return ERROR_OK;
}

我手动启用了此宏,编译失败。

谁能帮助确定我在配置 openOCD 时是否遗漏了某些内容? 我仅通过"--禁用错误"选项调用配置脚本。

你需要用MinGW编译器构建OpenOCD,而不是MSYS 编译器。可以尝试使用此存储库中的脚本。 该链接还描述了如何在 MSY 下安装 MinGW。

最新更新