libevent使用<一> libevent导入项目

最近作mysql代理层读写分离,发如今C,C++领域libevent很厉害的样子。  mysql

1. 安装libeventlinux

    linux下源码安装或者直接yum安装。sql

    libevent只是一套对一些底层技术的封装,本身自己并不像其余linux使用yum安装的软件同样会在/usr/bin/下有可执行文件,他只是一套动态连接库。即你能够在你的C程序中使用他.缓存

    

yum install libevent
yum install libevent-devel

  若是是源码安装,可能会麻烦点,由于你在指定安装路径的时候,可能和系统不识别的库不录不一致,好比你系统是64位的,你却将动态链接库装在了你的当前目录/root/,那么这样须要将你当前这台机器的/etc/ld.conf.d/下增长一个文件,名字任意,内容为/rootspa

  保存退出后指定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到咱们本身的项目中,在当前路径下该更能识别了吧。code

  2. 建立项目。blog

  最简单的项目其实就是一个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下的头文件,固然找到头文件并无多大用,还的找到头文件中定义的那些方法的源码生成的动态库的位置。

相关文章
相关标签/搜索