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


std::allocator > 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


由于该问题没有解决,所以尝试换一种思路


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