Compiling under Linux
< Zh
Jump to navigation
Jump to search


本文需要更新以包含有关该主题的当前信息。
记得在本文的讨论页上查看标记者留下的任何注释。
记得在本文的讨论页上查看标记者留下的任何注释。
在 Linux 下编译
作为一个成功的多人连线MOD,一个Linux的服务器是必不可少的,构建Linux服务端二进制文件的大量繁杂的基础工作是自动完成的,本文介绍了构建Linux服务端所需要的环境及配制.
系统要求
在Linux下编译SDK需要以下工具. 任何其它版本会导致编译或运行时的错误.
- GCC 3.4.1 或更高版本.
- Xerces XML parser 2.6.0 或更高版本.
- GLIBC 2.3.2 或更高版本.
Slackware 10.0 是个不错的创建编译环境的工具.
设置Makelife
作为编译过程的一部分,需要将在windows下编译时使用的Microsoft Visual C++工程文件转换为makefile,在进行转换时需要配置几个参数,他们被包括在linux_sdk/Makefile,至少需要配置以下参数(注意, 不要使用"~"作为你的主目录, 因为部分make过程不能理解):
- MOD_PROJ, 在Windows下编译使用的工程文件名.
- MOD_CONFIG, 在编译Linux版本mod时使用的培植选项,一般与Release Win32(MSVC中)的选项是相同的,决定此参数最简单的方法是保留默认选项,然后运行make过程并从生成的makefile中选择适当的选项.
- GAME_DIR, 游戏的安装路径.
- CC, CPLUS, CLINK, CPP_LIB, 这些参数应该指向你的 GCC 3.4.1. 安装,分别为C编译器。C++编译路经,C连接器(这三项一般都可设为gcc)及C++库路径.
- XERCES_INC_DIR, XERCES_LIB_DIR, xerce库的安装目录.
当这些参数设定后,只需简单的运行:
make
有些人报告了一个 bug, 当运行 vcpm 时要求"export LD_LIBRARY_PATH=~/source/bin". 这里是一个修正的补丁. (如果你没有应用 SDK Known Issues List#First_big_pass_at_-Wall_and_consistent_code 的修正, 必须使用 -D 选项.)
--- Makefile.vcpm Sat Oct 1 22:26:26 2005 +++ Makefile.vcpm.bak Sat Oct 1 22:25:43 2005 @@ -14,12 +14,12 @@ TIER1_OBJ_DIR=$(BUILD_OBJ_DIR)/vcpm/public #we use custome CFLAGS because the base ones interfere with XERCES -CFLAGS= -w -fpermissive -D_LINUX -DNDEBUG -D_alloca=alloca -D_snprintf=snprintf -D_vsnprintf=vsnprintf $(ARCH_CFLAGS) +CFLAGS= -w -fpermissive -D_LINUX -DNDEBUG $(ARCH_CFLAGS) #DEBUG = -g -ggdb #CFLAGS+= $(DEBUG) INCLUDEDIRS=-I$(PUBLIC_SRC_DIR) -I$(XERCES_INC_DIR) -I$(UTIL_COMMON_SRC_DIR) -I$(TIER1_PUBLIC_SRC_DIR) -LDFLAGS_VC=-lm -ldl -L$(XERCES_LIB_DIR) -lxerces-c $(GAME_DIR)/bin/tier0_i486.so $(GAME_DIR)/bin/vstdlib_i486.so +LDFLAGS_VC=-lm -ldl -Wl,-rpath -Wl,$(GAME_DIR)/bin -L$(XERCES_LIB_DIR) -lxerces-c $(GAME_DIR)/bin/tier0_i486.so $(GAME_DIR)/bin/vstdlib_i486.so DO_CC=$(CPLUS) $(INCLUDEDIRS) -w $(CFLAGS) -DARCH=$(ARCH) -o $@ -c $< @@ -51,7 +51,7 @@ $(DO_CC) $(TIER1_OBJ_DIR)/%.o: $(TIER1_SRC_DIR)/%.cpp - $(DO_CC) -Dstricmp=strcasecmp -Dstrcmpi=strcasecmp + $(DO_CC) clean: -rm -rf $(VCPM_OBJ_DIR)
这将编译vcpm程序,使用由这个程序从MSVC工程文件(.vcproject)生成的makefile片段以及以上设定的参数来编译你的mod.
如果你在使用 GCC, 你可能会参见 SDK Known Issues List#Getting the SDK to work under -Wall -Werror.
运行MOD
要运行MOD,将make过程生成的文件复制到<mod dir>/bin/server_i486.so
, 并用适当的 -game
参数运行 srcds_run
.