CentOS 7.2 上编译 TrinityCore

Submitted by Dot on Sun, 09/04/2016 - 18:18

00 前言

  • TrinityCore 是什么?黑话,一个网络游戏框架;白话,一个魔兽世界服务器端
  • 本文描述在 CentOS 7.2 上部署 TrinityCore
  • 编译流程官方 wiki 讲的很详细,不赘述。这里只讲一些可能遇到的问题,以及 wiki 遗漏的一些细节
  • linux 上的编译可以借助这个脚本,它可以完成编译中几乎所有的步骤

01 Requirements

  • Processor with SSE2 support 
  • Boost ≥ 1.55
  • MySQL ≥ 5.1.0 
  • OpenSSL ≥ 1.0.0 
  • CMake ≥ 3.0
  • GCC ≥ 4.9.0 or Clang  ≥ 3.5 (recommended)
  • zlib ≥ 1.2.7
1.1 缺什么

CentOS/Redhat 7 有 3 个不达标:cmake(2.8) 、boost(1.53) 和 gcc(4.8.5, 尽管 wiki 里忽略了),cmake 可以通过安装 EPEL 里的 cmake3 解决(也可以选择自己编译),而后面两个就必须自己编译了。
cmake 和 boost 的安装官方 wiki 有介绍,不过遗漏了两个细节:

  • 如果是从 EPEl 里安装的 cmake3,请 ln -s /usr/bin/cmake3 /usr/bin/cmake,否则会提示 cmake not found
  • 编译 boost 时,请用 ./bootstrap.sh --prefix=/usr,否则默认安装在 /usr/local/ 下,导致服务器无法启动,提示类似 libboost_system.so.1.61.0: cannot open shared object file: No such file or directory.
1.2 编译 gcc

下载 gcc,本例使用是仅比要求高一点的 4.9.4 。
解压进入目录执行 ./configure ,提示需要 gmp、mpfr 和 mpc。
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.
此时的第一反应是分别编译 3 个软件,其实没有必要,因为系统有集成,缺的只是 devel,安装即可
yum install gmp-devel mpfr-devel libmpc-devel
接下来记得添加 32 位支持
yum install gmp-devel.i686 mpfr-devel.i686 libmpc-devel.i686 glibc-devel.i686
现在可以完成 ./configure 了。
make -j4
sudo make install
过程中出现了 Error 2,还好后面没什么影响。

02 开始编译TrinityCore

进入 TrinityCore 仓库目录
mkdir build; cd build
用推荐的参数运行 cmake
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/$USER/server -DTOOLS=1 -DWITH_WARNINGS=1
此时应该会报错:
GCC: TrinityCore requires version 4.9.0 to build but found 4.8.5
但我们已经在默认路径 (/usr/local/) 安装 gcc 4.9.4 了,怎么定位呢?两个方法:

  1. yum remove gcc 删掉低版本的 gcc 即可
  2. 或者编辑 TrinityCore 仓库目录下的 CMakeLists.txt ,在 "project(TrinityCore)" 前加入两行
    set(CMAKE_C_COMPILER "/usr/local/bin/gcc")
    set(CMAKE_CXX_COMPILER "/usr/local/bin/c++")

现在 cmake 可以顺利执行了。
make -j4
make install
至此,编译完成。

03 运行 TrinityCore

接下来的提取地图,根据需要修改 etc/ 下的两个 conf 文件,以及导入数据库,官方wiki讲的很详细,just follow。
你也可以使用这个脚本来完成所有这些操作。
这里只补充几点依然是官方 wiki 遗漏的细节:

  • 如果你保留了 worldserver.conf 和 bnetserver.conf 里 DataDir, CertificatesFile 和 PrivateKeyFile 的设置,那么你只能在 bin/ 下启动服务器;所以建议将这3个改为绝对路径
  • 同理,worldserver.conf, authserver.conf(3.3.5 only)和bnetserver.conf(6.x only)里都有 LogsDir,建议改成绝对路径,否则日志总产生在当前目录
  • 尽管如此,第一次必须在 bin/ 下启动 worldserver,这样服务器才能找到 TDB_*.sql
  • 如果是6.x,当你要修改 realmlist 表中的 address 和 localAddress 时,请同时修改 bnetserver.conf 里的 LoginREST.ExternalAddress 和 LoginREST.LocalAddress
  • 如果是6.x,你需要 connection_patcher 生成的登录器,但你得用 Windows 下编译的connection_patcher 才行;what's the point of connection_patcher compiled on linux? I don't get it.

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.