muduo 用法

1.源碼下載

svn上最新的代碼


1)需要安裝的工具

yum install cmake


2)安裝boost


3)進入主目錄

./build.sh



2 編譯異常


1)CMakeFiles/ttcp_blocking.dir/common.cc.o: In function `parseCommandLine(int, char**, Options*)':

/root/workspace/muduo-master/examples/ace/ttcp/common.cc:14: undefined reference to 


`boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, 


std::allocator<char> > const&, unsigned int, unsigned int)'


從該錯誤可以得知是沒有指定鏈接到boost庫導致的


2)在CMakeLists.txt文件中添加鏈接到boost

set(CMAKE_CXX_FLAGS "-lboost_program_options")


繼續提示出錯信息:

/root/workspace/muduo-master/muduo/base/FileUtil.cc: In member function ‘int 


muduo::FileUtil::ReadSmallFile::readToString(int, String*, int64_t*, int64_t*, int64_t*)’:

/root/workspace/muduo-master/muduo/base/FileUtil.cc:98: 錯誤:‘sizeof’不能用於不完全的類


型‘boost::STATIC_ASSERTION_FAILURE<false>’


由於該問題沒有解決,所以嘗試換一種思路


3)由於是examples目錄下的編譯文件在鏈接的時候,沒有指定boost庫,導致第一個問題

因此在編譯的過程中,取消examples內容的編譯,選擇生成版本release

BUILD_NO_EXAMPLES=1 BUILD_TYPE=release ./build.sh  -j2

詳細的參數設置可以查看build.sh



3 編譯結果


和muduo目錄平級的目錄下生成build文件夾,

庫文件:build/release/lib

libmuduo_base.a        libmuduo_http.a     libmuduo_net.a

libmuduo_base_cpp11.a  libmuduo_inspect.a  libmuduo_net_cpp11.a



4 簡單測試

運行bin/inspector_test,通過瀏覽器http://191.168.230.23:12345訪問,請關閉linux

防火牆service iptbables stop.


測試結果:

Name:inspector_test

State:S (sleeping)

Tgid:15762

Pid:15762

PPid:12064

TracerPid:0

Uid:0000

Gid:0000


5個人測試

muduo是靜態鏈接的C++程序庫,使用muduo庫的時候,只需要設置好頭文件路徑和庫文件路徑並鏈接相應的靜態庫文件(-lmuduo_net -


lmuduo_base)即可。


手動編譯第一個丟包的程序


cd muduo-master/examples/simple/discard


g++ main.cc discard.cc   -I /root/workspace/muduo-master/   /root/workspace/build/release/lib/libmuduo_base.a 


/root/workspace/build/release/lib/libmuduo_net.a   -lpthread -o muduotest 


在這裏附上Ubuntu編譯的錯誤:

  編譯出錯,沒有找到pthread_create的實現,安裝libboost-dev解決問題

使用指令:

apt-get install g++ cmake libboost-dev make git


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章