linux x86(64位/32位)系统 libevent 编译安装说明

采用的版本是"libevent-1.4.13-stable.tar.gz", 源码压缩包可以在官方网站上下载

http://libevent.org/

目前比较新的是2.x的版本,英文doc也可以下载。

本文环境:vmware10虚拟机  centos6.5 64位和32位,主要是64位操作

1、解压安装包

    注意:请不要讲压缩包放在共享目录中来执行安装操作,放到linux自己的文件夹下,比如/home/xxx

tar -zxvf libevent-1.4.13-stable.tar.gz 解压后得到目录libevent-1.4.13-stable

文件列表如图

     “图片呗csdn吃了”linux x86(64位/32位)系统 libevent 编译安装说明

    啰嗦一句,初学者会发现里面没有makefile文件,只有makefile.in和makefile.am,实际是通过运行configure脚本来生成makefile文件,这个编译选项是可配置的。configure等几个脚本自动判断操作系统的环境,包括cpu类型、操作系统等信息,生成匹配的makefile文件。脚本写的很强大很复杂,核心脚本configure大概2万多行。

2、编译安装

    配置方法网上有一堆,但基本上没有怎么区分32位和64位的介绍

网上的方法是

#./configure   --prefix=/usr

#make

#make install

OK,完成

    我是在64位机上操作,执行完后,没有太关注过程,相关库放到了/usr/lib目录下,且没有生成link文件,执行ldconfig也报错,具体原因分析后面补充。

    我们知道64位的linux系统的动态库是分lib和lib64的,其中lib中放置的是32位库,这个可以通过file  xx/lib/xxx.so查看得到信息,如下图所示为32位动态库

    linux x86(64位/32位)系统 libevent 编译安装说明linux x86(64位/32位)系统 libevent 编译安装说明

    插一句,如果64位机器想要编译或者运行32位程序,请安装glibc-devel.i686,注意版本,网上有些指导没有注意到32位和64位的区分,只说明安装glibc-devel,用yum search glibc可以得到如图所以,i686为32位,x86_64是64位机,devel为开发用版本,包含的东西要多些。

    

有点扯远了,64位机我们希望将动态库安装到lib64目录下,我们可以执行

    #./configure --help  打开帮助页面,如下图我们可以找到libdir也是可以配置的

    linux x86(64位/32位)系统 libevent 编译安装说明linux x86(64位/32位)系统 libevent 编译安装说明

     

那么我们就可以设置

    #./confure--libdir=/usr/local/lib64,执行完毕后可以看到create 一些makefile文件

    “图片被CSDN吃了”linux x86(64位/32位)系统 libevent 编译安装说明

    打开makefile文件,可以看到我们修改的参数libdir已经生效

    linux x86(64位/32位)系统 libevent 编译安装说明     “图片被CSDN吃了”

     继续执行编译和安装命令

      #make && make install

      linux x86(64位/32位)系统 libevent 编译安装说明

      执行完毕后,可以查看到libevent相关的动态和静态库安装到了/usr/local/lib64目录下,头文件

      “图片被CSDN吃了”linux x86(64位/32位)系统 libevent 编译安装说明

       如果安装路径不合适需要,重新安装,请确保makefile没有改动的前提下,执行#make uninstall,操作,可以看到删除了头文件和库文件、和一些帮助文件

       “图片被CSDN吃了”linux x86(64位/32位)系统 libevent 编译安装说明


       回过头来解决ldconfig报错的问题,之前的错误make install后,报错

       linux x86(64位/32位)系统 libevent 编译安装说明linux x86(64位/32位)系统 libevent 编译安装说明

       原因是我把libevent安装文件放在共享目录下,共享目录下是win格式下的文件系统,linux无法做链接文件操作,所以创建链接失败,进入到lib64下可以到所有libevent的so文件都不是link。解决方法,将安装文件放到linux系统自己的目录下,如/home/xxx。更换目录无错误了,且lib64目录下的动态库也是链接形式存在

    

      linux x86(64位/32位)系统 libevent 编译安装说明

       另外还有就是在arm平台下编译(安装)libevent,这个网上有很多资料,抽空也试试看,走一遍看看是否有坑。