Muduo编译步骤

编译Muduo库出现的错误以及解决方案


Muduo版本号: 1.0.8


错误1: 出现 ‘ld -lpthread  not find’ 的错误, 原因是 boost库没有指定, 这个错误提示是最坑的, 错误提示完全不知道是什么意思.

解决方案:  在CMakeLists.txt中加入 boost库的头文件和库文件路径即可

     set(BOOST_INCLUDEDIR "/export/newjpush/fuzheng/commonlibs/include")
     set(BOOST_ROOT "/export/newjpush/fuzheng/commonlibs/lib")


错误2:  编译example/protobuf/rpc时候, 编译不过. 

出现 NewCallBack not defined in the scope. 

原因是protobuf库版本不兼容问题. 在机器上已经安装了protobuf, 头文件放在/usr/include 并且已安装的protobuf是 3.0.0

pb3和pb2的头文件不一样, muduo的rpc中使用的是应该是pb2, 导致编译o文件出错。

为了不影响现有的环境, 在不同的目录中安装了pb2

step1;set(Protobuf_INCLUDE_DIRS "/export/newjpush/fuzheng/commonlibs/include")

指定protobuf的头文件路径为新安装的pb2

修改之后, 以为万事大吉, 但是确出现 error显示 生成的pb文件版本跟头文件版本不匹配, 原因是CMake中使用了默认的protoc

step2:  把CMakefile.txt中的:

add_custom_command(OUTPUT rpc.pb.cc rpc.pb.h
  COMMAND protoc
  ARGS --cpp_out . ${CMAKE_CURRENT_SOURCE_DIR}/rpc.proto -I${CMAKE_CURRENT_SOURCE_DIR}
  DEPENDS rpc.proto
  VERBATIM )

修改为绝对路径

add_custom_command(OUTPUT rpc.pb.cc rpc.pb.h
  COMMAND /export/newjpush/fuzheng/proto/bin/protoc
  ARGS --cpp_out . ${CMAKE_CURRENT_SOURCE_DIR}/rpc.proto -I${CMAKE_CURRENT_SOURCE_DIR}
  DEPENDS rpc.proto
  VERBATIM )

最后, 又出现链接上的错误, 原因还是pb版本问题。修改方案是:

在CMakefile.txt中添加:

LINK_DIRECTORIES("/export/newjpush/fuzheng/proto/lib")


Note:

通过查看flags.make文件,可以查看cmake的CXX_FLAGS

注意: 修改CMakefiles.txt之后, 一定要把之前build文件夹全部删除,否则不会生效,


你可能感兴趣的:(Muduo编译步骤)