Cygwin64终端:未定义对mbuf_remove的引用

时间:2019-09-03 02:23:43

标签: c mongoose cygwin mongoose-web-server embeddedwebserver

“我正在学习从cesanta / mongoose https://github.com/cesanta/mongoose/blob/master/examples/tcp_echo_server/echo_server.c创建一个TCP回显服务器,但是当使用cygwin使用Makefile对其进行编译时,它将无法正常工作。

我也尝试学习Makefile,但是到目前为止我很难理解它。我还将头文件包含在源文件的当前目录中,但仍然无法使用。

错误:

def benchmking(n=0):
    import time
    items = range(int(10**(6+n)))
    def f2(x):return x*x

    start = time.time()
    squared = list(map(f2, items))
    return time.time() - start

在github上有一个文档,但是没有关于此错误的解释。我还尝试复制实际代码,但仍然产生相同的错误。

$ make
gcc -o echo_server tcpechoserver.c mongoose.c -I.
/tmp/cct2s339.o:tcpechoserver.c:(.text+0x59): undefined reference to `mbuf_remove' "
#include "mongoose.h"

/*  ERROR CYGWIN64 TERMINAL
    gcc -o echo_server tcpechoserver.c mongoose.c -I.
    /tmp/cct2s339.o:tcpechoserver.c:(.text+0x59): undefined reference to `mbuf_remove' 
*/

// event handler
static void ev_handler(struct mg_connection *nc, int ev, void *p)
{
    // structure memory buffer descriptor
    struct mbuf *io = &nc->recv_mbuf;
    (void) p;

    switch (ev)
    {
    case MG_EV_RECV:
        mg_send(nc, io->buf, io->len);      // echo message back
        mbuf_remove(io, io->len);           // Discard message from recv buffer
        break;
    default:
        break;
    }
}

int main(void)
{
    struct mg_mgr mgr;
    const char *port1 = "3232", *port2 = "127.0.0.1:17000";

    mg_mgr_init(&mgr, NULL);
    mg_bind(&mgr, port1, ev_handler);
    mg_bind(&mgr, port2, ev_handler);

    printf("Starting echo mgr on ports %s, %s\n",port1, port2);

    // MAIN LOOP
    for (;;)
    {
        mg_mgr_poll(&mgr,1000);
    }
    mg_mgr_free(&mgr);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

Cygwin compilation的公开问题
该问题于2018年4月11日创建,至今仍未公开
我克隆了最新的猫鼬存储库,并在linux和cygwin(64bit)下编译

is_free
is_free

我现在的建议,使用猫鼬6.6作为解决方法
在学习上应该没什么区别
并解决这种错误对于学习者来说太麻烦了

要从猫鼬6.6编译tcp_echo_server示例,请在cygwin中使用以下命令
无需额外复制,只需进行
您应该在当前目录中找到tcp_echo_server.exe

id     is_free
--     -------
1      0
2      0
3      0
4      1
5      1
6      1
7      1
8      1
9      1
10     0
11     0
12     0