Open OrionChang opened 4 years ago
使用 CMake 方式进行编译,你的Ubuntu 是哪个发行版?
18.04
好的,晚些我整理一份操作手册出来
使用 docker 下的 ubuntu:18.04 镜像
apt-get update -y
apt-get upgrade -y
apt install git -y
安装 git 以便后面克隆代码仓库git --version
确认安装的 git 版本,当下是:git version 2.17.1apt install git-lfs -y
下载相关的包git lfs install
安装钩子(提示 Git LFS initialized. 即表示初始化完成,可能会有一个 Error 提示当前的目录不是一个代码仓库,不用管)apt install build-essential -y
安装 gcc 编译器gcc --version
确认版本为:7.4.0apt install wget -y
安装 wget 指令先安装编译 cmake 所需要的依赖库,如 OpenSSL 等:apt install openssl libssl-dev -y
接下来下载、解压、配置,并编译安装 cmake 3.16 版本
wget https://github.com/Kitware/CMake/releases/download/v3.16.0-rc1/cmake-3.16.0-rc1.tar.gz \
&& tar -xzvf cmake-3.16.0-rc1.tar.gz \
&& cd cmake-3.16.0-rc1 \
&& ./bootstrap && make -j4 && make install
使用 cmake --version
确认版本为:cmake version 3.16.0-rc1
cd ~
git clone https://github.com/PandasWS/Pandas.git
apt install libmysqlclient-dev zlib1g-dev libpcre3-dev -y
cd ~/Pandas
cd 3rdparty/boost/
bash bootstrap.sh
获得 b2 程序./b2
并回车,程序将开始编译 Boostcd ~/Pandas
mkdir cbuild
cd cbuild
cmake -G "Unix Makefiles" ..
make -j4
可以试试看~ 有问题随时联系。 目前已知在编译地图服务器的时候,有一处警告:
/root/Pandas/src/map/script.cpp:4621:8: warning: extra tokens at end of #endif directive [-Wendif-labels]
#endif Pandas_ScriptCommand_SelfDeletion
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我将会在下一个版本修正它,这并不影响我们的使用
请问还有其他问题么? 或者是上述的流程是否能够帮你完成编译? 如果没有问题的话,麻烦说一声哈,感谢~
感謝教學~~ 我是初學者~ 但無意間發現了熊貓模擬器~ 覺得可以從此模擬器入手探討~ 希望是好的開始
太好了 我就说 怎么 linux下的编译脚本都删除掉了
希望能把这个更新到文档区
整理了下 这些命令就可以了 准备做一个dockefile 方便部署
apt install libmysqlclient-dev zlib1g-dev libpcre3-dev cmake -y git clone https://github.com/PandasWS/Pandas.git cd ~/Pandas cd 3rdparty/boost/ bash bootstrap.sh ./b2 cd .. mkdir build cd build cmake -G "Unix Makefiles" .. make -j4
但是编译完成后 执行程序 遇到下列错误 root@dev-server:~/Pandas# ./login-server Floating point exception (core dumped)
测试平台1 ubuntu 20.04 + gcc 9.3.0 测试平台2 ubuntu 18.04 + gcc 7.5.0
原版rathena 可以编译通过正常运行
gdb 调试信息 Starting program: /root/Pandas/login-server [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGFPE, Arithmetic exception. 0x00005555557fd5fb in std::detail::_Mod_range_hashing::operator() ( this=0x555555b87cf8 <translate_db+88>, num=10983096385041811433, __den=0) at /usr/include/c++/9/bits/hashtable_policy.h:433 433 { return num % den; }
@flufy3d 你在崩溃的环境下执行一下 locale 回车,我看下内容~ 是 zh-TW.utf8 么?
不是 是 C.utf8
@flufy3d 请问此问题后来解决了嘛?
请问该如何在Ubuntu下编译这个服务端