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