libevent使用<一> libevent导入项目
最近做mysql代理层读写分离,发现在C,C++领域libevent很厉害的样子。
1. 安装libevent
linux下源码安装或者直接yum安装。
libevent只是一套对一些底层技术的封装,自己本身并不像其他linux使用yum安装的软件一样会在/usr/bin/下有可执行文件,他只是一套动态链接库。即你可以在你的C程序中使用他.
yum install libevent
yum install libevent-devel
如果是源码安装,可能会麻烦点,因为你在指定安装路径的时候,可能和系统不识别的库不录不一致,比如你系统是64位的,你却将动态连接库装在了你的当前目录/root/,那么这样需要将你当前这台机器的/etc/ld.conf.d/下增加一个文件,名字任意,内容为/root
保存退出后指定ldconfig,ldconfig是linux系统的搜索系统下默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。即ldconfig是找到了我们自己的/root目录下的所有动态库名并且存入了/etc/ld.so.cache缓存文件。在我们程序运行过程中,就会动态链接到/etc/ld.so.cache文件中指明的文件了。
例外,由于我们是使用的yum的安装方式安装的libevent-devel,所以其头文件都是仿制在该计算机系统识别的默认路径上,如果我们直接使用gcc就根本不用指定头文件的地址。当然如果我们没有安装libevent-devel,也可以copy到我们自己的项目中,在当前路径下该更能识别了吧。
2. 创建项目。
最简单的项目其实就是一个C文件
#include <stdio.h> #include "event.h" int main()
{
printf("helloworld~\n");
struct event_base *events;
}
执行
gcc test.c
可以看到生成了一个a.out文件
执行
./a.out
可以得到输出,并且证明/usr/include 下的event.h是在gcc中是默认识别的。并且创建一个一个未使用的结构提events.
由以上得出:
linux在使用gcc对源码进行编译的时候,除了开发者自己指定的路径,当前路径,还包括系统自己默认的路径,比如/usr/lib64,就包括很多so动态链接库,而所谓的动态链接库是由C或C++程序通过GCC生成的不带main方法的一对程序集合,这些程序集合可以给其他main程序提供支持,当然同时得有头文件的定义。动态链接的意思是在程序已经编译通过,在运行过程中链接该链接库中的代码的过程,而静态链接是直接将静态链接库作为我们代码中的一部分进行编译,这样做程序执行速度会比较快,但是对于系统存储空间会占用的比较多。
另外头文件在系统中使用yum install *-devel 会安装到/usr/include中,包括 kernel的头文件,会存储在/usr/include/sys中,所以我们在一些C程序中会看到:
#include <sys/epoll.h>
这样的代码,实际上就是去找到了/usr/include/sys/epoll.h下的头文件,当然找到头文件并没有多大用,还的找到头文件中定义的那些方法的源码生成的动态库的位置。
libevent使用<一> libevent导入项目的更多相关文章
- 解决Android studio导入项目卡死
在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android studio呈现卡死的现象!当遇到这种情况时,可以看看是下面那种情况,在按照方法来解决! ...
- Android Studio导入项目问题小结
1. import project 之后一直停留在 building 界面 解决方案: 1.随便找一个你能运行的as项目 2.打开gradle-wrapper.properties,文件目录:项目/g ...
- Eclipse导入项目出现红色叹号的解决方法
情景: 我在另一台电脑开发Java Web项目,开发环境为 JDK 1.7,Tomcat v7.0,然后导入另一台电脑上,开发环境为为 JDK 1.8,Tomcat v8.0. 问题: 导入项目出现红 ...
- 导入项目时,有关[2016-04-03 20:38:02 - Dex Loader] Unable to execute dex: Multiple dex files 问题
最近我在学习androidUI设计,在网上找了一个UI菜单界面开源代码示例,按照步骤导入项目,运行的时候控制台结果报了如下错误: [2016-04-03 20:38:02 - Dex Loader] ...
- Android Studio在创建/导入项目的时候,一直处于building “XXX”gradle project info的解决办法
Android Studio在新建项目或者导入项目的时候,可能会一直处于building “XXX”gradle project info的状态,而且还取消不了,无奈之下只能干掉进程... 还有一种情 ...
- 【问题】AndroidStudio导入项目一直卡在Building gradle project infod的最快速解决方案
原因 AndroidStudio导入项目一直卡在Building gradle project info的原因, 是因为导入的这个项目使用的gradle版本与本地已经拥有的gradle版本不一致,导致 ...
- 【转】libevent和基于libevent的网络编程
转自: http://www.cnblogs.com/nearmeng/p/4043548.html 1 libevent介绍和安装 介绍 libevent是一个轻量级的基于事件驱动的高性能的开源网络 ...
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项 ...
- 【笔记】android sdk集成的eclipse中导入项目
android sdk集成的eclipse中导入项目 想要把旧的ADT项目,一模一样的导入进来,需要: 1.把项目放到,非当前ADT的workspace目录下: 2.从Project中Import,选 ...
- Android Studio导入项目非常慢的解决办法
问题 Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势.然而在实际使用时,依然有不少不爽的地方 ...
随机推荐
- ibatis传入数组或List
小结一下ibatis框架下,传入参数为数组类型或者是List类型的sql写法.标签里面都不需要表名 1.传入字符串数组,不需要标明parameterClasss,数组和List类型对象一样都可以用&l ...
- net异步线程注意事项
某人(不是我写的)写的异步代码:(还请博友们点评哈~) AsyncEventHandler[] asy = new AsyncEventHandler[ResultCount]; IAsyncRe ...
- VS2013的virtualpath在当前应用程序根的外部
将项目升级到VS2013环境时,运行报"virtualpath 在当前应用程序根的外部"错误,如下图 搜寻解决方法如下: 1.禁用VS2013 IDE的浏览链接视图功能 2.在We ...
- iOS 并发编程指南
iOS Concurrency Programming Guide iOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易.Mac OS 和 iOS ...
- 基础-训练营-day1~day5
基础 大纲 变量: 声明.初始化.使用.命名 数据类型: int.long.double.boolean.char.String 运算符: 赋值.算术.关系.逻辑 ...
- zabbix配置发送报警邮件
配置邮件分为两种情况: 第一种:使用远端邮件服务器发送报警邮件 Linux系统版本:CentOS6.5-64 下载mailx: http://nchc.dl.sourceforge.net/proje ...
- 脚本编程中的test、bash调试、变量计算、参数
脚本编程中的test.bash调试.变量计算.参数 1.文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通文件 -d FILE:测试路径是否为目录 -r FILE:测试当前 ...
- Windows 下用 gogs 配置局域网 git server
大道曙光 Windows 下用 gogs 配置局域网 git server 最近要用 C# 开发一个新的项目,所以需要在 Windows 局域网环境下构建一个 git server. 在 Window ...
- WebApi 找到了与该请求匹配的多个操作
在同一个命名空间内,报错 错误的路由代码: namespace CRM4S { public static class WebApiConfig { public static void Regist ...
- HTMLCanvasElement.toDataURL()
HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI .可以使用 type 参数其类型,默认为 PNG 格式.图片的分辨率为96dpi. 如果画布的 ...