当前位置:首页 » 编程软件 » libeventvs编译

libeventvs编译

发布时间: 2022-05-21 13:15:09

⑴ 如何编译和安装libevent

1.先用:ls -al /usr/lib | grep libevent 查看是否已安装,如果已安装且版本低于1.3,则先通过:rpm -e libevent —nodeps 进行卸载。

2.下载libevent安装包:libevent-1.4.13-stable.tar.gz,然后解压

3.切换到解压后的 libevent 主目录:cd libevent-1.4.13-stable

4.依次执行:
./configure –prefix=/usr (或 ./configure --program-prefix=/usr)
make
make install

⑵ 请问libevent2.0.21支持VC2003的nmake进行编译吗编译test时提示“error LNK2019: 无法解析的外部符号

error LNK2001: unresolved external symbol __endthreadex
的处理方式:

打开project setting 选择c/c++选项卡

在categroy中选择code generation 然后修改Use run-time library 为任何一个带mulitithreaded的选项即可

⑶ libevent库的使用

很明确的告诉你:VC中可以用libevent库。
方法:
1、下载libevent源码
2、用VC编译,一般编译成静态的。
3、在项目中配置libevent库。
4、引用。
你可以按着以上步骤来。应该没问题。

⑷ 自己编译的libevent c++怎么找到

如果手机是window mobile系统的,还差不多! moto的,系统是linux,也可以在电脑给它编软件的,不过需要专门的环境。 这叫交叉编译,也就是在电脑上编译出来的结果,却放到手机上运行! 补充回答: 也不一定要装个linux系统

⑸ 在vs2010编译qt程序时就会出现错误无法打开文件"Qt5Cored.lib"

PrintPreviewDialog pPDlg;
exec_prefix='NONE'PACKAGE='libevent'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_URL=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'

⑹ libevent和nginx哪个源码

Libevent入门 Libevent英文入门资料<<Fast portable non-blocking network programming with Libevent>>。 网友翻译上面的资料,制作的《Libevent参考手册》 上面的两个资料主要是让我们熟悉Libevent的使用。 Libevent源码分析 源码分析工具,我推荐source insight 或者 Scientific Toolworks Understand,source insight很多年没有更新了,使用下来还是Understand方便。 开始分析源码肯定比较痛苦,尤其是对新手,因为不知道从哪里开始,所以可以考虑参考《Libevent源码深度剖析》,在前人的基础之上慢慢扩展,这样可以事倍功半。
很明确的告诉你:VC中可以用libevent库。
方法:
1、下载libevent源码。
2、用VC编译,一般编译成静态的。
3、在项目中配置libevent库。
4、引用。
你可以按着以上步骤来。应该没问题。

⑺ libevent是跑在什么系统上的

一.C10K的问题 C10K的问题在上个世纪90年代就被提出来了。大概的意思是当用户数超过1万时,很多设计不良好的网络服务程序性能都将急剧下降、甚至瘫痪。并且,这个问题并不能通过升级硬件设备解决,是操作系统固有的问题,也就是说,如果你的服务器最高能支撑1000个并发,尽管你升级了计算能力高一倍的 cpu,内存再翻一番,硬盘转速在快一倍,也无法支撑2000个并发。 经典的网络编程模型有4个: 1. Serve one client with each thread/process, and use blocking I/O。即对每个客户都使用不同的线程或进程进行服务,在每个线程或进程中使用阻塞I/O。这是小程序和java常用的策略,对于交互式的应用也是常见的选择,这种策略很能难满足高性能程序的需求,好处是实现极其简单,容易实现复杂的交互逻辑。我们常用的Apache、ftpd等都是这种工作。 2. Serve many clients with single thread, and use nonblocking I/O and readiness notification。即对所有的客户使用单一一个线程或进程进行服务,在这个线程或进程里,采用异步IO的策略。这是经典模型,优点在于实现较简单,方便移植,也能提供足够的性能;缺点在于无法充分利用多CPU的资源。 3. Serve many clients with each thread, and use nonblocking I/O and readiness notification 对经典模型2的简单改进,仍然采用异步IO的策略,但对所有的客户使用多个线程或进程进行服务。缺点是容易在多线程并发上出bug,甚至某些OS不支持多线程进行readiness notification 4. Serve many clients with each thread, and use asynchronous I/O 在有AI/O支持的OS上,能提供相当高的性能。不过AI/O编程模型和经典模型差别相当大,基本上很难写出一个框架同时支持AI/O和经典模型。这个模型主要是用于window平台上。 在linux上开发高性能的网络应用,只能选着第2、3种方式。考虑到复杂性,我们往往只采用第2种。下面就讨论一下第二种模型。 我们知道,实现异步IO一般是采用select 或poll来实现。Select 定义如下: int select(int n, fd_set *rd_fds, fd_set *wr_fds, fd_set *ex_fds, struct timeval *timeout); Poll 的接口如下: int poll(struct pollfd *ufds, unsigned int nfds, int timeout); 然而 Select 和Poll 在连接数增加时,性能急剧下降。这有两方面的原因:首先操作系统面对每次的select/poll 操作,都需要重新建立一个当前线程的关心事件列表,并把线程挂在这个复杂的等待队列上,这是相当耗时的。其次,应用软件在select/poll 返回后也需要对传入的句柄列表做一次扫描来判断哪些句柄是可用的,这也是很耗时的。这两件事都是和并发数相关,而I/O 事件的密度也和并发数相关,导致CPU 占用率和并发数近似成O(n2)的关系。 因为以上的原因,Unix 上开发了性能更高的epoll, kqueue, /dev/poll 这3个程序接口来解决上述问题。其中epoll 是linux 的方案,kqueue 是freebsd 的方案,/dev/poll 是最古老的Solaris 的方案,使用难度依次递增。 简单的说,这些api 做了两件事: 1. 避免了每次调用select/poll 时kernel 分析参数建立事件等待结构的开销,kernel 维护一个长期的事件关注列表,应用程序通过句柄修改这个列表和捕获I/O 事件。 2. 避免了select/poll 返回后,应用程序扫描整个句柄表的开销,Kernel 直接返回具体的事件列表给应用程序。 二. libevent库 由于epoll, kqueue, /dev/poll每个接口都有自己的特点,程序移植非常困难,于是需要对这些接口进行封装,以让它们易于使用和移植,其中libevent库就是其中之一。 按照libevent的官方网站,libevent库提供了以下功能:当一个文件描述符的特定事件(如可读,可写或出错)发生了,或一个定时事件发生了,libevent就会自动执行用户指定的回调函数,来处理事件。目前,libevent已支持以下接口/dev/poll, kqueue(2), event ports, select(2), poll(2) 和 epoll(4)。Libevent的内部事件机制完全是基于所使用的接口的。因此libevent非常容易移植,也使它的扩展性非常容易。目前,libevent已在以下操作系统中编译通过:Linux,BSD,Mac OS X,Solaris和Windows。 使用libevent库进行开发非常简单,也很容易在各种unix平台上移植。一个简单的使用libevent库的程序如下: 三.libevent库的应用 Go2代理是一个大流量的代理应用,月流量近TB。其中图片、flash、zip文件占总流量的绝大部分。为了减少流量成本,需要将部分进行分流。开始时,使用了传统的php代理来分流,但Go2并发访问极大,多进程架构的php无法承受,在虚拟主机vps上启动数秒后就立即瘫痪。后改用 python的twisted网络架构,采用了twisted的异步tcp通讯功能。运行一段时间后,发现twisted的异步dns稳定性不太好,经常发生系统级的崩溃。最后,经过分析比较,决定采用libevent库来做Go2 的分流代理应用。 Libevent库支持异步socket,支持异步dns,并本身还带了个简单的http 服务器。Go2 的分流代理应用就是使用了libevent库的以上三个功能。 1、简单的http 服务器:实现的分类代理的用户端的输入,输出管理。 2、异步socket,实现了高并发性的用户接入,和高并发性的目的服务器访问。 3、异步dns,解决了dns查询时的并发性和高效性。

⑻ 有没有人在windows下,用VS2010成功运行过thrift的程序

Thrift的C++版本,在win下编译很麻烦。过程:
1.svn下载thrift。你首先要学习,什么是svn(svn类似ftp)。接着,要去找svn客户端(类似FlashFXP
)。

2.下载完成后,在目录里找到 thrift\lib\cpp,里面有两个VS工程,一个是libthrift,提供基本服务端功能,另一个是libthriftnb。提供高级服务端功能,比如异步支持。

3.当前版本0.9.0,但任然需要修改thrift里的部分代码,才能让它在win里运行。具体代码包请加群193713524,里面有几个大牛有已经改好的,工作日在群里多找几个时间问一下。当然,自己改也行,但需要找很多个帖子,不断尝试才行,因为有些帖子给出的修改方案并不可取。

4.接下来,需要使用thrift的依赖库。有两个,boost和libevent。这两个依赖库有很多版本,具体需要哪个版本,在thrift和thriftnb工程->属性->VC++目录->包含目录 里可以看到。由于boost库编译后的lib,我死活用不了,而且libevent不需要编译,只需要进行include就行。因此,我的建议是,只下载 boost和libevent,在编译时,会提示缺少 boost的lib,然后直接在网上下载编译好的 boost lib,有好几个。

5.把这两个库加入到thrift和thriftnb工程里后,就可以进行编译了。要注意的是,你打开vs后,应该只有一个解决方案,这个解决方案里,有两个项目,一个是thrift,另一个是thriftnb。编译时,要对解决方案进行生成,而不是对项目进行生成。如果只对项目进行生成,则可能会造成生成第二个项目时,会把第一个项目产生的lib给删掉。另一个,thrift有4个版本,win32_debug,win32_debug_mt,x64_release,x64_release_mt,我建议都编译。最后编译出来,要用的是lib库,和用于调试的pdb文件,release版本是没有也不需要pdb的,只有debug版本才需要pdb.

6.接着谈别的语言。由于目前0.9.0并不是正式版本,所以thrift文档里提到的功能,并不是每一个语言都支持,实际情况是,每一种语言支持的协议和服务端模式都少得可怜。而且有些功能还有bug,比如C++的thrift的保存为文件功能,就有bug。不过通信功能还是没有问题的。

7.最后需要注意一个地方就是,thrift的string是utf-8的。对于java或c#这种语言,当然不是问题,但c++处理utf-8是有点麻烦的,做过的朋友不怕,没做过的,可能需要去专门补上几课:编码是什么?如何用vc++处理ansi/宽字符/Unicode/utf-8/utf-16/gbk,以及之间的互相转换等等,非常麻烦。

8.上面罗嗦了一堆,其实一句话可以解决上面所有问题,就是直接在工作日,在那个群里,多吼几次,跪求高手的已经搞好的现成的库、包以及示范工程,这样就可以节约非常多的时间。同时也感谢那个群里热心的大牛们,帮我搞通了这些问题。

⑼ libevent 支持udp吗

1、下载libevent源码。
2、用VC编译,一般编译成静态的。
3、在项目中配置libevent库。
4、引用。 你可以按着以上步骤来。应该没问题。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:968
python中的init方法 发布:2025-10-20 08:17:33 浏览:676
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:828
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:737
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1076
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:308
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:188
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:829