最近做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导入项目的更多相关文章

  1. 解决Android studio导入项目卡死

    在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android studio呈现卡死的现象!当遇到这种情况时,可以看看是下面那种情况,在按照方法来解决! ...

  2. Android Studio导入项目问题小结

    1. import project 之后一直停留在 building 界面 解决方案: 1.随便找一个你能运行的as项目 2.打开gradle-wrapper.properties,文件目录:项目/g ...

  3. Eclipse导入项目出现红色叹号的解决方法

    情景: 我在另一台电脑开发Java Web项目,开发环境为 JDK 1.7,Tomcat v7.0,然后导入另一台电脑上,开发环境为为 JDK 1.8,Tomcat v8.0. 问题: 导入项目出现红 ...

  4. 导入项目时,有关[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] ...

  5. Android Studio在创建/导入项目的时候,一直处于building “XXX”gradle project info的解决办法

    Android Studio在新建项目或者导入项目的时候,可能会一直处于building “XXX”gradle project info的状态,而且还取消不了,无奈之下只能干掉进程... 还有一种情 ...

  6. 【问题】AndroidStudio导入项目一直卡在Building gradle project infod的最快速解决方案

    原因 AndroidStudio导入项目一直卡在Building gradle project info的原因, 是因为导入的这个项目使用的gradle版本与本地已经拥有的gradle版本不一致,导致 ...

  7. 【转】libevent和基于libevent的网络编程

    转自: http://www.cnblogs.com/nearmeng/p/4043548.html 1 libevent介绍和安装 介绍 libevent是一个轻量级的基于事件驱动的高性能的开源网络 ...

  8. AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案

    AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项 ...

  9. 【笔记】android sdk集成的eclipse中导入项目

    android sdk集成的eclipse中导入项目 想要把旧的ADT项目,一模一样的导入进来,需要: 1.把项目放到,非当前ADT的workspace目录下: 2.从Project中Import,选 ...

  10. Android Studio导入项目非常慢的解决办法

    问题 Android Studio目前已经更新到2.0 Preview 6了,作为Google大力推崇的开发工具,相对于Eclipse ADT有着不可比拟的优势.然而在实际使用时,依然有不少不爽的地方 ...

随机推荐

  1. Candies---hdu3159(spfa+差分约束)

    题目链接:http://poj.org/problem?id=3159 题意:有n个小孩,m个关系格式是A B C 表示小孩 B 的糖果数最多比小孩A多C个,相当于B-A<=C; 有m个这样的关 ...

  2. Shell函数语法

    Shell函数语法 定义函数: function   函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名  参数一   参数二 return在函数里面使用会跳出函数并 ...

  3. JavaScript:实现瀑布流

    一.前言: 瀑布流现在是一个非常常用的布局方式了,尤其在购物平台上,例如蘑菇街,淘宝等等. 二.流程: 1.在html文件中写出布局的元素内容: 2.在css文件中整体对每一个必要的元素进行样式和浮动 ...

  4. Linux和Windows路由配置

    Linux和Windows路由配置 一.配置路由 1-       原则上一台主机只能有一条缺省路由.如果一台主机上有多个网段的话,请配置能够上网的那个网段的网关为缺省路由 Linux配置缺省路由: ...

  5. [ROS] slam_gmapping

    slam_gmapping节点 1)slam_gmapping 节点在sensor_msgs/LaserScan消息内获取数据并建立地图 map(nav_msgs/OccupancyGrid).该地图 ...

  6. python 内存监控模块之memory_profiler

    0. memory_profiler是干嘛的 This is a python module for monitoring memory consumption of a process as wel ...

  7. javascript实例学习之六—百叶窗效果

    一.要结合布局才能形成百叶窗的效果 二.开启两个定时器,第一个定时器控制的是百叶窗整体一次上翻,一次下翻:另一个控制百叶窗中的各页逐次翻转,形成层次效果.否则就成了普通的滚动广告的效果了 本实现借助于 ...

  8. web文件上传的实现

    1,html页面,上传使用input type=file控件,其所在的form必须加上enctype="multipart/form-data" <form role=&qu ...

  9. Pods管理iOS第三 库(二)

    Podfile 文件    如果要整合Pods, 先需要创建 个Podfile 件.xcode创 建 个新 程Pods-2保存到桌 .在终端cd到 程的根 录. 例如下: lifan:~ apple$ ...

  10. 新的三种EBS类型解析

    就在前两天,创建EBS的之后页面发生了点变化,出现三种新的类型: General Purpose (SSD) Volumes Provisioned IOPS (SSD) Volumes Magnet ...