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有着不可比拟的优势.然而在实际使用时,依然有不少不爽的地方 ...
随机推荐
- Arbitrage---poj2240(floyd)
题目链接:http://poj.org/problem?id=2240 题意:有n个国家的,有m个关系,每个关系的格式是:A B C表示1单位的A国货币可以换B单位C国货币:求是否存在一种方法使得货币 ...
- C#中jQuery Ajax实例(二)
上一篇写了一个简单的Ajax异步程序,这一次同样是简单的程序,只不过这次先把参数传到一般处理程序(后缀为ashx)中,再把结果传回到页面. 1.html代码: <html xmlns=" ...
- MVC中”从客户端检测到有潜在危险的Request.Form值“的解决方法
从客户端检测到有潜在危险的Request.Form值: 在webForm中,可以在aspx页面顶部 <%@ Page Language="C#" AutoEventWireu ...
- Java获取本地IP地址
import java.net.InetAddress; import java.net.UnknownHostException; public class IpTest { public stat ...
- iOS 应用内跳转到appstore里下载
SKStoreProductViewController类是UIViewController的子类, 如果你对view controller比较熟悉的话,那SKStoreProductViewCont ...
- 诊断SQLSERVER问题常用的日志
这里主要有两个: (1)Windows事件日志 (2)SQLSERVER ErrorLog 1.Windows事件日志 Event Log 作为一个Windows开启和管理的服务程序,Windows会 ...
- 如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序 .
原文:http://linder.iteye.com/blog/735435 简介 WebDAV (Web-based Distributed Authoring and Versioning)是 ...
- nginx源码分析—内存池结构ngx_pool_t及内存管理
Content 0. 序 1. 内存池结构 1.1 ngx_pool_t结构 1.2 其他相关结构 1.3 ngx_pool_t的逻辑结构 2. 内存池操作 2.1 创建内存池 2.2 销毁内存池 2 ...
- ApplicationContext.xml文件详解
想必用过Spring的程序员们都有这样的感觉,Spring把逻辑层封装的太完美了(个人感觉View层封装的不是很好).以至于有的初学者都不知道Spring配置文件的意思,就拿来用了.所以今天我给大家详 ...
- [Slimdx]顶点和索引缓冲,绘制了2个分离的三角形
定义网格顶点和索引缓冲,绘制了2个分离的三角形. using System; using System.Drawing; using RGeos.SlimScene.Core; using SlimD ...