测试环境:Ubuntu22.04 Desktop
完成日期:2024/3/8
先编译依赖库boost
下载boost源码压缩包
wget https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_1_84_0.tar.gz
开始编译,根据电脑性能,这里可能花很长的时间。
默认情况下,将编译所有模块,可参考官网说明选择性编译必要模块。
cd boost_1_84_0/
./bootstrap.sh --prefix=`pwd`/install
./b2 install
编译完成,根据我自己的编译路径,最终编译生成的文件放在下面的路径,后面将在muduo编译脚本中引用它。
/home/test/boost_1_84_0/install
编译muduo
克隆muduo源码仓库。
git clone https://github.com/chenshuo/muduo.git
注释掉GCC警告参数——‘-Wold-style-cast’
由于boost库中存在C风格的指针转换,在GCC中会报'old-style-cast'警告,而在muduo的cmake脚本中将其标记为错误(本意只针对于muduo自身的代码)。因此,这里需要将这个GCC警告参数注释掉:
在shell脚本中引入boost库
需要说明的是,我这里并没有按照muduo的README中的建议,通过linux包管理器直接安装boost库。主要原因是我觉得这种方式并不通用。同时需要注意的是,linux包管理器所安装的boost库,是做过一些修改、编译参数优化的,与boost库官网中指导编译出来的结果并不完全一致。最直接的证明就是,上面的'old-style-cast'警告在muduo编译时已经不存在了。
根据上面boost库编译的生成路径,将其引入到muduo源码根路径下的build.sh:
默认情况下,编译的是Release版本;编译结束后,回到编译路径,即源码路径的上一级路径中的build/release-cpp11目录,执行安装:
make install
最终,将在编译路径的同级路径下,生成安装目录:
如何生成Debug版本?
默认情况下生成的Release版本,如果需要生成Debug版本,可以在执行编译脚本时,在命令行开头引入BUILD_TYPE参数:
# 生成Debug版本
BUILD_TYPE=debug ./build.sh
# 生成Release版本
BUILD_TYPE=release ./build.sh