muduo库的摸索(1)

muduo库的安装

1. 从https://github.com/chenshuo/muduo下载muduo文件。(只要download会自动打包一个muduo_master.zip文件)

2.接下来是在linux中的命令行了

sudo apt-get install cmake(安装cmake)

sudo apt-get install libboost-dev libboost-test-dev  (安装boost库,muduo依赖这个库)

unzip muduo_master.zip   (解压缩)

./build.sh -j2  
(编译muduo库和它自带的例子,生成可执行文件和静态库文件,分别位于../build/release-cpp11{bin,lib}

./build.sh install
(将muduo头文件和库文件安装到../build/release-install-cpp11/{include,lib})

至此,muduo安装完成,然而,我们还不能直接使用他们。

使用前的设置

目的:使linux能够找到库文件和头文件

先说头文件。g++在编译程序时,会有一些指定的头文件搜索路径。为了让g++能够找到muduo的头文件,必须将这些头文件放到linux头文件指定搜索路径,或者修改头文件指定搜索路径。这里,我们将头文件放到搜索路径中。即,将build/release-install-cpp11/include目录下的muduo,这整个文件夹放到/usr/include中。(要使用sudo)

再说库文件。muduo是一个静态库,g++也有指定的库文件搜索路径。与头文件一样,为了让g++能够找到muduo的库文件,必须将这些头文件放到linux库文件指定搜索路径,或者修改库文件指定搜索路径。这里,我们将build/release-install-cpp11/lib下的四个库文件放到usr/lib中。

使用的注意点

以./muduo-master/examples/simple/time目录下,main.cc、time.cc、time.h三个文件的编译为例。

正确指令:

g++ main.cc time.cc time.h -std=c++11 -lmuduo_net -lmuduo_base -lpthread

1. 用到的库文件分别是libmuduo_net.a、libmuduo_base.a。在命令行中要去掉首尾lib与.a。

2. muduo使用了c++11的语法,在编译时带上-std=c++11选项。

3. muduo使用了多线程,编译时要用到线程库文件。

4. 库文件的调用顺序很重要。如果pthread放到最前边,会出现很多未知引用。(最底层的库放在最右边,左边的库调用右边的库)

g++链接的原则:是“先引用, 后定义”,或者叫做“越基础的库, 越往后面写”。库文件可能出现这样的问题A库依赖B库,B库依赖C库,而C库又依赖了A库,出现了这样的问题,不只我们头大,g++也会头大。团队里之前曾经讨论过这个问题,一个相对完美的方案是,设置底层库,中间库,上层逻辑,这样的垂直关系,尽量避免循环依赖。
 

关于第四点,可以参考

https://www.jianshu.com/p/2b53227e0473 

http://www.cnblogs.com/wujianlundao/archive/2012/06/06/2538125.html   (讲述了如何解决循环依赖)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值