游戏服务器正式发布时动态库处理的两种策略
引言
今天幫同事解決hiredis動(dòng)態(tài)庫問題的時(shí)候,發(fā)現(xiàn)他是同時(shí)安裝了兩套hiredis,用的頭文件是新版的,bin文件指向的動(dòng)態(tài)庫.so文件卻是舊的,引發(fā)了莫名其妙的問題,解決后討論時(shí)又引出了一個(gè)問題,就是日后游戲發(fā)布時(shí)這些動(dòng)態(tài)庫怎么搞?隨著bin文件一起?還是每個(gè)服務(wù)器各自安裝?
?
結(jié)論
方法1:和bin文件放在一起或相鄰的lib目錄,即所有用到的動(dòng)態(tài)庫(系統(tǒng)自帶庫除外),比如libmysql.so libhiredis.so libmysqlpp.so等等,都和bin文件放在同一個(gè)目錄下或相鄰lib目錄,新建一個(gè)配置文件,比如myserver.conf,這個(gè)文件里面記錄本游戲bin文件所在目錄或lib所在目錄,比如" /home/myserver/lib",游戲發(fā)布時(shí)只需拷貝這個(gè)整體文件夾到目標(biāo)服務(wù)器的/home/myserver目錄下,把myserver.conf拷貝到目錄 /etc/ld.so.conf.d/ 中,運(yùn)行命令ldconfig,這樣游戲的bin文件就指向了自己上傳的so文件
方法2:做系統(tǒng)鏡像, 即做好一個(gè)游戲運(yùn)行環(huán)境,安裝必要的庫,比如mysql, hiredis, mysqlpp等,游戲可以正常運(yùn)行了就以此游戲?yàn)槟0?#xff0c;做鏡像,以后再開服時(shí)拿鏡像系統(tǒng)就能開搞,保證環(huán)境一模一樣
?
思考
兩種辦法各有優(yōu)略,哪種方法更好呢?
方法1可以更好的打包,壓縮后隨便拷貝;方法2雖然第一次做鏡像系統(tǒng)麻煩些,以后用著也蠻方便的
方法1也有個(gè)缺點(diǎn),如果目標(biāo)服務(wù)器上已經(jīng)有對(duì)應(yīng)的so文件了,會(huì)不會(huì)混淆又難以發(fā)現(xiàn),引發(fā)莫名其妙的問題,比如目標(biāo)服務(wù)器已經(jīng)安裝了mysql,但是版本和自己用的不同,這個(gè)時(shí)候自己的服務(wù)器bin文件會(huì)不會(huì)依然指向系統(tǒng)的so文件???這個(gè)問題尚需驗(yàn)證
?
?
?
總結(jié)
以上是生活随笔為你收集整理的游戏服务器正式发布时动态库处理的两种策略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hiredis使用,封装代码示例
- 下一篇: redis实现简单限流