Ubuntu编译boost和muduo
必要环境
输入如下命令以安装必要的环境:
sudo apt-get update sudo apt-get install cmake build-essential g++ python-dev-is-python3 autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev
进入 boost 官网,选择合适的版本,复制其链接,输入如下指令下载 boost
压缩包并解压:
wget https://boostorg.jfrog.io/artifactory/main/release/1.69.0/source/boost_1_69_0.tar.gz tar -zxcf boost_1_69_0.tar.gz
通过如下指令克隆 muduo 源码:
git clone https://github.com/chenshuo/muduo.git
编译boost
进入 boost 解压后的文件夹,然后运行 bootstrap.sh
编译构建顺序:
cd boost_1_69_0 ./bootstrap.sh
完成之后会在当前目录下生成 b2
程序,运行该程序以编译源码:
./b2
完成之后,输入如下命令将编译生成的文件安装在默认的 linux 系统头文件和库文件的搜索路径下:
sudo ./b2 install
通过如下代码,测试 boost 是否安装成功:
#include <iostream> #include <boost/bind.hpp> #include <string> using namespace std; class Hello { public: void say(string name) { cout << name << " say: hello world!" << endl; } }; int main() { Hello h; auto func = boost::bind(&Hello::say, &h, "zhang san"); func(); return 0; }
编译muduo
进入 muduo
文件夹,使用 vim 打开 CMakeLists.txt
文件,注释到如下内容
if(CMAKE_PROJECT_NAME STREQUAL "muduo") # option(MUDUO BUILD EXAMPLES "Build Muduo examples" ON) endif()
完成之后保存退出。
输入如下命令执行构建程序,然后进行安装:
./build.sh sudo ./build.sh install
完成之后,在当前目录的父目录中会生成 build
文件夹,进入其中将头文件和库文件拷贝到系统路径下:
cd ../build/release-install-cpp11 cd include sudo mv muduo /usr/local/include cd ../lib sudo mv * /usr/local/lib
测试
输入如下测试代码,构建一个简单的回声服务器:
#include <muduo/net/TcpServer.h> #include <muduo/base/Logging.h> #include <boost/bind.hpp> #include <muduo/net/EventLoop.h> // 使用muduo开发回显服务器 class EchoServer { public: EchoServer(muduo::net::EventLoop* loop, const muduo::net::InetAddress& listenAddr); void start(); private: void onConnection(const muduo::net::TcpConnectionPtr& conn); void onMessage(const muduo::net::TcpConnectionPtr& conn, muduo::net::Buffer* buf, muduo::Timestamp time); muduo::net::TcpServer server_; }; EchoServer::EchoServer(muduo::net::EventLoop* loop, const muduo::net::InetAddress& listenAddr) : server_(loop, listenAddr, "EchoServer") { server_.setConnectionCallback( boost::bind(&EchoServer::onConnection, this, _1)); server_.setMessageCallback( boost::bind(&EchoServer::onMessage, this, _1, _2, _3)); } void EchoServer::start() { server_.start(); } void EchoServer::onConnection(const muduo::net::TcpConnectionPtr& conn) { LOG_INFO << "EchoServer - " << conn->peerAddress().toIpPort() << " -> " << conn->localAddress().toIpPort() << " is " << (conn->connected() ? "UP" : "DOWN"); } void EchoServer::onMessage(const muduo::net::TcpConnectionPtr& conn, muduo::net::Buffer* buf, muduo::Timestamp time) { // 接收到所有的消息,然后回显 muduo::string msg(buf->retrieveAllAsString()); LOG_INFO << conn->name() << " echo " << msg.size() << " bytes, " << "data received at " << time.toString(); conn->send(msg); } int main() { LOG_INFO << "pid = " << getpid(); muduo::net::EventLoop loop; muduo::net::InetAddress listenAddr(8888); EchoServer server(&loop, listenAddr); server.start(); loop.loop(); }
输入如下命令进行编译,然后运行服务器:
g++ main.cpp -lmuduo_net -lmuduo_base -lpthread -std=c++11 ./a.out
打开一个新的终端输入如下命令连接服务器:
nc localhost 8888
输入任意字符并按下回车,看其能否回显。
至此,boost 库和 muduo 库便安装成功!
本文作者:Leaos
本文链接:https://www.cnblogs.com/tuilk/p/16813371.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步