研究過Teamtalk的伙伴會發(fā)現(xiàn)它的線程池和連接池與很多文件有關(guān)聯(lián), 這篇文章主要寫,把它的線程池連接池拆出來需要用到哪些文件。
其實(shí)我本來只想測試它的連接池的,但發(fā)現(xiàn)連接池里套的有線程池,于是就一起拆出來了。
整個工程的樹目錄結(jié)構(gòu)如下:這里可以忽略build目錄內(nèi)部的所有文件,因?yàn)檫@是cmake后產(chǎn)生的。
base目錄里的文件如下:因?yàn)檫B接池是在db_proxy_server服務(wù)器上的,所以這里我與teamtalk保持一致創(chuàng)建的是db_proxy_server目錄,內(nèi)容如下:
這里比較重要的是libbase.a , libslog.so, libhiredis.a
簡單講解這三個庫文件來自哪里,
libslog.a: 與base同級目錄下有一個slog文件夾,不是我這上邊的slog文件夾(我這個是base目錄里的slog,只包含了頭文件,因?yàn)閡til.h會用到這個頭文件), 將里面的源文件編譯為庫文件(libslog.a)即可,還有一點(diǎn)需要說明, slog日志庫就是對log4c××的封裝。
libbase.a: 就是base目錄里面的所有源文件編譯出來的庫。
libhiredis.a: 這個是安裝hiredis的時候生成的庫,作為一個客戶端與redis服務(wù)器通訊,在redis連接池中需要用到。
強(qiáng)調(diào)一點(diǎn), 這三個庫文件,直接放到/usr/lib中,cp libbase.a , libslog.so, libhiredis.a /usr/lib 不然找不到, 當(dāng)然你可以通過CMakeLists.txt文件自定義路徑。
看一下比較關(guān)鍵的CMakeLists.txt文件內(nèi)容:可以著重看一下我里面的注釋,對于LINK_DIRECTORIES是有細(xì)節(jié)的,它的路徑?jīng)Q定了libbase.a , libslog.so, libhiredis.a的尋找路徑, 如果你把這三個庫文件放到了/usr/lib中則可以不用在這里配置這三個庫文件的尋找路徑(但還是需要這句話,因?yàn)檫€有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 表示顯式調(diào)用靜態(tài)庫
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 )
#這個相當(dāng)于 -I 指定頭文件路徑
INCLUDE_DIRECTORIES(./ ../base ${MYSQL_INCLUDE_DIR})
#這個相當(dāng)于 -L 指定庫文件路徑
#這里有個細(xì)節(jié), 如果新建了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的時候,里面搬運(yùn)過來的。
整個編譯過程就是在db_proxy_server中:
mkdir build ->cd build ->cmake … ->make 即可
整個工程鏈接
提取碼:o0ma
如果你因?yàn)槟承煳募?dǎo)致無法運(yùn)行,不用擔(dān)心, 我這里使用shell腳本把所有依賴的庫打包下來, 一定可以運(yùn)行。
所有庫文件打包好的
提取碼:0cem
簡單說明兩個鏈接的區(qū)別, 第一個工程鏈接是所有源文件,以及那三個庫文件的打包,如果你以前成功編譯過teamtalk工程, 就一定可以運(yùn)行, 但如果是新手就不能運(yùn)行,因?yàn)榭赡苋鄙倌承┮蕾嚕?br />而下邊這個鏈接,我已經(jīng)用腳本打包好了所有依賴的庫,不管你以前有沒有編譯過teamtalk ,都可以直接運(yùn)行。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站題目:把TeamTalk(即時通訊項(xiàng)目)中的線程池連接池拆出來單獨(dú)測試。-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article10/dghddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站收錄、定制網(wǎng)站、網(wǎng)站導(dǎo)航、做網(wǎng)站、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容