189 8069 5689

把TeamTalk(即时通讯项目)中的线程池连接池拆出来单独测试。-创新互联

研究过Teamtalk的伙伴会发现它的线程池和连接池与很多文件有关联, 这篇文章主要写,把它的线程池连接池拆出来需要用到哪些文件。
其实我本来只想测试它的连接池的,但发现连接池里套的有线程池,于是就一起拆出来了。

成都创新互联致力于网站建设,网站制作设计,营销网页定制网站开发,外贸网站制作,企业网站建设,小程序设计,网站SEO优化,网站设计制作案例丰富,是成都做网站公司和建站公司,欢迎咨询。

整个工程的树目录结构如下:
在这里插入图片描述这里可以忽略build目录内部的所有文件,因为这是cmake后产生的。

base目录里的文件如下:
在这里插入图片描述因为连接池是在db_proxy_server服务器上的,所以这里我与teamtalk保持一致创建的是db_proxy_server目录,内容如下:

在这里插入图片描述这里比较重要的是libbase.a , libslog.so, libhiredis.a
简单讲解这三个库文件来自哪里,
libslog.a: 与base同级目录下有一个slog文件夹,不是我这上边的slog文件夹(我这个是base目录里的slog,只包含了头文件,因为util.h会用到这个头文件), 将里面的源文件编译为库文件(libslog.a)即可,还有一点需要说明, slog日志库就是对log4c××的封装。

libbase.a: 就是base目录里面的所有源文件编译出来的库。
libhiredis.a: 这个是安装hiredis的时候生成的库,作为一个客户端与redis服务器通讯,在redis连接池中需要用到。
强调一点, 这三个库文件,直接放到/usr/lib中,cp libbase.a , libslog.so, libhiredis.a /usr/lib 不然找不到, 当然你可以通过CMakeLists.txt文件自定义路径。

看一下比较关键的CMakeLists.txt文件内容:可以着重看一下我里面的注释,对于LINK_DIRECTORIES是有细节的,它的路径决定了libbase.a , libslog.so, libhiredis.a的寻找路径, 如果你把这三个库文件放到了/usr/lib中则可以不用在这里配置这三个库文件的寻找路径(但还是需要这句话,因为还有mysql的库文件路径)。

cmake_minimum_required(VERSION 2.6)
PROJECT(dbpool_test)

AUX_SOURCE_DIRECTORY(./ SRC_LIST)

SET(EXECUTABLE_OUTPUT_PATH  ./)

SET(MYSQL_INCLUDE_DIR /usr/include/mysql)
SET(MYSQL_LIB /usr/lib64/mysql)

#加上 -static 表示显式调用静态库
ADD_DEFINITIONS( -g -W -Wall -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DAC_HAS_INFO
-DAC_HAS_WARNING -DAC_HAS_ERROR -DAC_HAS_CRITICAL -DTIXML_USE_STL
-DAC_HAS_DEBUG -DLINUX_DAEMON -std=c++11 -DENCRYPT )

#这个相当于 -I   指定头文件路径
INCLUDE_DIRECTORIES(./ ../base ${MYSQL_INCLUDE_DIR})

#这个相当于 -L   指定库文件路径
#这里有个细节, 如果新建了build目录,cd build ->cmake .. 则这里必须要多退一级,比如./ 要更换为 ../
#而上边的那些却不用
LINK_DIRECTORIES(./  ../ ../base ${MYSQL_LIB} )


ADD_EXECUTABLE(dbpool_test ${SRC_LIST})

TARGET_LINK_LIBRARIES(dbpool_test base pthread mysqlclient slog hiredis)

db_proxy_server中有三个头文件不是自己写的
read.h, sds.h, hiredis.h, 这三个头文件都是安装hiredis的时候,里面搬运过来的。

整个编译过程就是在db_proxy_server中:
mkdir build ->cd build ->cmake … ->make 即可

整个工程链接
提取码:o0ma

如果你因为某些库文件导致无法运行,不用担心, 我这里使用shell脚本把所有依赖的库打包下来, 一定可以运行。
所有库文件打包好的
提取码:0cem

简单说明两个链接的区别, 第一个工程链接是所有源文件,以及那三个库文件的打包,如果你以前成功编译过teamtalk工程, 就一定可以运行, 但如果是新手就不能运行,因为可能缺少某些依赖;
而下边这个链接,我已经用脚本打包好了所有依赖的库,不管你以前有没有编译过teamtalk ,都可以直接运行。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前题目:把TeamTalk(即时通讯项目)中的线程池连接池拆出来单独测试。-创新互联
文章源于:http://jkwzsj.com/article/dghddo.html

其他资讯