网络库小常识------持续编辑ing

1.libevent,libev,libuv 的关系

libevent : 名气最大,应用最广泛,历史悠久的跨平台事件库;

libev : 较libevent而言,设计更简练,性能更好,但对Windows支持不够好;

libuv : 开发node的过程中需要一个跨平台的事件库,他们首选了libev,但又要支持Windows,故重新封装了一套,unix下用libev实现,Windows下用IOCP实现;

2.libuv交叉编译注意事项

由于libuv是支持跨平台的,在编译的时候,有时会出现在这个平台上可以,在另外一个平台上用相同的方法就会出现问题的现象。我在为ARM编译该库的时候,出现了编译时,出现了代码错误:

error: invalid conversion from 'void*' to 'poll_ctx*' [-fpermissive]
这是因为我选的编译器是C++编译器问题,而libuv库是用C语言写的,C++比C更严格,所以我们必须告诉编译器 “void 指针” 到底指向的是什么类型。这时有两个解决办法,一是修改源码,二是换为C的编译器。

修改源码:

struct pool_ctx* a = func(...);  //func()返回类型为 void *
/******************************修改为***************************/
struct pool_ctx* a = (struct pool_ctx*)func(...);
修改编译器:比喻原来为g++,现在改为gcc




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值