“我正在学习从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;
}
答案 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