1. 程式人生 > >linux x86(64位/32位)系統 libevent 編譯安裝說明

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吃了”

    囉嗦一句,初學者會發現裡面沒有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位動態庫

    

    插一句,如果64位機器想要編譯或者執行32位程式,請安裝glibc-devel.i686,注意版本,網上有些指導沒有注意到32位和64位的區分,只說明安裝glibc-devel,用yum search glibc可以得到如圖所以,i686為32位,x86_64是64位機,devel為開發用版本,包含的東西要多些。

有點扯遠了,64位機我們希望將動態庫安裝到lib64目錄下,我們可以執行

    #./configure --help  開啟幫助頁面,如下圖我們可以找到libdir也是可以配置的

    

那麼我們就可以設定

    #./confure--libdir=/usr/local/lib64,執行完畢後可以看到create 一些makefile檔案

    “圖片被CSDN吃了”

    開啟makefile檔案,可以看到我們修改的引數libdir已經生效

         “圖片被CSDN吃了”

     繼續執行編譯和安裝命令

      #make && make install

      

      執行完畢後,可以檢視到libevent相關的動態和靜態庫安裝到了/usr/local/lib64目錄下,標頭檔案

      “圖片被CSDN吃了”

       如果安裝路徑不合適需要,重新安裝,請確保makefile沒有改動的前提下,執行#make uninstall,操作,可以看到刪除了標頭檔案和庫檔案、和一些幫助檔案

       “圖片被CSDN吃了”

       回過頭來解決ldconfig報錯的問題,之前的錯誤make install後,報錯

       

       原因是我把libevent安裝檔案放在共享目錄下,共享目錄下是win格式下的檔案系統,linux無法做連結檔案操作,所以建立連結失敗,進入到lib64下可以到所有libevent的so檔案都不是link。解決方法,將安裝檔案放到linux系統自己的目錄下,如/home/xxx。更換目錄無錯誤了,且lib64目錄下的動態庫也是連結形式存在

      

       另外還有就是在arm平臺下編譯(安裝)libevent,這個網上有很多資料,抽空也試試看,走一遍看看是否有坑。