编译链接muduo库中的echo例子

系统ubuntu 18.04
下载的是muduo c++17版本。
进入muduo c++17源码目录,编译:

编译并安装

./buil.sh install

在其父级目录下有个build目录,里面有

release-cpp17  release-install-cpp17

在目录release-install-cpp17中会看到有include和lib 文件夹。

下面以编译echo为例:

  1. 进入muduo-cpp17/examples/simple/echo文件夹;
  2. 开始编译:
g++ -c -I /home/xxx/
### 关于 Muduo 的使用说明 Muduo 是一个基于 C++ 的高性能网络编程,由陈硕开发并开源。它主要用于构建高效的服务器端应用程序,支持多线程事件驱动模型以及多种协议处理功能。 #### 下载与安装 要下载和安装 Muduo ,请访问其官方 GitHub 页面[^1]。通常可以通过以下方式获取源码: ```bash git clone https://github.com/chenshuo/muduo.git cd muduo make sudo make install ``` 完成上述操作后,可以将 `libmuduo_base.so` 和 `libmuduo_net.so` 链接到项目中。需要注意的是,在链接阶段应确保 `-lmuduo_net -lmuduo_base` 的顺序正确,因为 `muduo_base` 依赖了 `muduo_net`。 #### 基本结构介绍 Muduo 主要分为两个模块:`muduo_base` 和 `muduo_net`。其中: - **muduo_base**: 提供基础工具类和支持函数,例如线程管理、互斥锁、条件变量等。 ```cpp mutable MutexLock mutex_; Condition notEmpty_(&mutex_); std::deque<int> queue_; ``` 上述代码片段展示了如何利用 `MutexLock` 实现线程安全的数据队列[^2]。 - **muduo_net**: 提供更高层次的网络通信抽象,封装了 TCP 连接、消息传递等功能。 #### 示例程序 下面是一个简单的例子,展示如何创建一个基本的 TCP 服务器: ```cpp #include "muduo/net/TcpServer.h" #include "muduo/net/EventLoop.h" using namespace muduo; using namespace muduo::net; void onConnection(const TcpConnectionPtr& conn) { LOG_INFO << (conn->connected() ? "Connected" : "Disconnected"); } void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp time) { string msg(buf->retrieveAllAsString()); conn->send(msg); } int main() { EventLoop loop; InetAddress serverAddr(9981); TcpServer server(&loop, serverAddr, "EchoServer"); server.setConnectionCallback(onConnection); server.setMessageCallback(onMessage); server.start(); loop.loop(); return 0; } ``` 此示例实现了一个回显服务器,当客户端发送数据时会将其原样返回给客户端。 #### 编译命令 为了成功编译以上代码,需指定正确的头文件路径和链接器选项: ```bash g++ your_program.cpp -std=c++11 -I/path/to/muduo/include \ -L/path/to/muduo/lib -lmuduo_net -lmuduo_base -lpthread -o output_binary ``` 注意这里的 `-lmuduo_net -lmuduo_base` 排序关系不可颠倒。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值