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

时间:2018-06-21 09:29:16

标签: build configure openocd

我已经从https://github.com/gnu-mcu-eclipse/openocd克隆了openOCD 并使用MSYS2(MINGW32)Shell构建它。编译顺利通过,尝试执行时失败,并显示错误“错误:创建套接字时出错”。

我启用了调试选项,发现它来自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时是否错过了什么吗? 我仅通过“ --disable-werror”选项调用配置脚本。

1 个答案:

答案 0 :(得分:0)

您需要使用MinGW编译器而不是MSYS来构建OpenOCD。您可以尝试使用this repo中的脚本。 链接还描述了如何在MSYS下安装MinGW。