游戏服务器正式发布时动态库处理的两种策略

引言

今天帮同事解决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文件???这个问题尚需验证

发布了105 篇原创文章 · 获赞 58 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/yzf279533105/article/details/102984273