1. 程式人生 > >編譯安裝muduo庫

編譯安裝muduo庫

原始檔tar包的下載地址:http://code.google.com/p/muduo/downloads/list,此處以muduo-0.8.2-beta.tar.gz為例。

muduo使用了Linux較新的系統呼叫(主要是timerfd和eventfd),要求Linux的核心版本大於2.6.28。我自己用Debian 6.0 Squeeze / Ubuntu 10.04 LTS作為主要開發環境(核心版本2.6.32),以g++ 4.4為主要編譯器版本,在32-bit和64-bit x86系統都編譯測試通過。muduo在Fedora 13和CentOS 6上也能正常編譯執行,還有熱心網友為Arch Linux編寫了AUR檔案。

如果要在較舊的Linux 2.6核心上使用muduo,可以參考backport.diff來修改程式碼。不過這些系統上沒有充分測試,僅僅是編譯和冒煙測試通過。另外muduo也可以執行在嵌入式系統中,我在Samsung S3C2440開發板(ARM9)和Raspberry Pi(ARM11)上成功運行了muduo的多個示例。程式碼只需略作改動,請參考armlinux.diff。

muduo採用CMake為build system,安裝方法如下:
$ sudo apt-get install cmake

muduo依賴於Boost,也很容易安裝:
$ sudo apt-get install libboost-dev libboost-test-dev

muduo有三個非必需的依賴庫:curl、c-ares DNS、Google Protobuf,如果安裝了這三個庫,cmake會自動多編譯一些示例。安裝方法如下:
$ sudo apt-get install libcurl4-openssl-dev libc-ares-dev
$ sudo apt-get install protobuf-compiler libprotobuf-dev

muduo的編譯方法很簡單:
$ tar zxf muduo-0.8.2-beta.tar.gz
$ cd muduo/
$ ./build.sh -j2
編譯muduo 庫和它自帶的例子,生成的可執行檔案和靜態庫檔案
分別位於../build/debug/{bin,lib}
$ ./build.sh install
以上命令將muduo 標頭檔案和庫檔案安裝到../build/debug-install/{include,lib},以便muduo-protorpc 和muduo-udns 等庫使用

如果要編譯release版(以-O2優化),可執行:
$ BUILD_TYPE=release ./build.sh -j2

編譯muduo 庫和它自帶的例子,生成的可執行檔案和靜態庫檔案
分別位於../build/release/{bin,lib}
$ BUILD_TYPE=release ./build.sh install
以上命令將muduo 標頭檔案和庫檔案安裝到../build/release-install/{include,lib},以便muduo-protorpc 和muduo-udns 等庫使用

在muduo 1.0正式釋出之後,BUILD_TYPE的預設值會改成release。

編譯完成之後請試執行其中的例子,比如bin/inspector_test,然後通過瀏覽器訪問http://10.0.0.10:12345/或http://10.0.0.10:12345/proc/status,其中10.0.0.10替換為你的Linuxbox的IP。

在自己的程式中使用muduo

muduo是靜態連結的C++程式庫,使用muduo庫的時候,只需要設定好標頭檔案路徑(例如../build/debug-install/include)和庫檔案路徑(例如../build/debug-install/lib)並連結相應的靜態庫檔案(-lmuduo_net -lmuduo_base)即可。下面這個示範專案展示瞭如何使用CMake和普通makefile編譯基於muduo的程式:https://github.com/chenshuo/muduo-tutorial

注意:如果要在編譯程式的時候不帶include和lib的路徑,直接執行拷貝cp -r muduo /usr/include/ 將build/debug-install/include/muduo拷貝到/usr/include下。
  和 cp * /usr/lib把build/debug-install/lib下的庫拷貝到/usr/lib下