[C++][muduo]1-muduo安装和运行

muduo安装和运行

为补充C++工程知识近期打算学习muduo源码,下面记录muduo源码编译链接及运行过程。

0.版本

操作系统ubuntu 14.04及以上,gcc-8.3.0,cmake-3.13.4

1.安装必要的环境、依赖、工具

安装cmake,boost,curl,protobuf.

sudo apt-get install cmake -y
sudo apt-get install libboost-dev libboost-test-dev -y
sudo apt-get install libcurl4-openssl-dev linc-ares-dev -y
sudo apt-get install protobuf-compiler libprotobuf-dev -y

2.下载源码,这里我们clone到版本0.8.2

git clone -b v0.8.2 https://github.com/chenshuo/muduo.git

3.编译源码,如果顺利的话,在../build/debug/{bin,lib}中能看到可执行文件和库

cd muduo
./build.sh -j2

4.运行一个样例,在浏览器中键入http://localhost:12345即可观察到结果

./inspector_test 

—————————————————

可能出现的错误及解决方案:

编译链接中可能会出现错误

问题1:.error: cannot convert ‘const boost::shared_ptrmuduo::TimeZone::Data’ to ‘bool’ in return
bool valid() const { return data_; }

方案: 智能指针无法判空,不过这个错误很奇怪,但是可以用下面代码勉强解决它。

bool valid() const 
{
  if (data_)
    return true;
  else
    return false;
}

问题2: error: typedef ‘T_must_be_complete_type’ locally defined but not used [-Werror=unused-local-typedefs]

方案 muduo将编译中出现的warning视为error,如果我们能容忍warning,可以将其取消,即在CMakelists.txt中添加-Wno-unused-local-typedefs

问题3: undefined reference to `google::protobuf::Arena:😮…

方案: 看到undefined reference…错误大概率会想到是链接库在编译链接过程中没链接进去,OK,果然是这个原因,然后在CMakelists.txt中添加动态库位置,link_directories(/usr/local/lib/),解决之。

—————————————————

参考资料:

https://blog.csdn.net/u013944212/article/details/88086804
https://sqh.me/tech/install-muduo-undefined-reference-to-in-ubuntu/
https://www.cnblogs.com/binbinjx/p/5626916.html
《Linux多线程服务端编程使用muduo C++网络库》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值