Ahhhh,my arch linux permission me only english input method,and therefore write this article in english.
John Carmack released quake2 source code, and only windows version can be compiled correctly.
I modified the makefile and compiled it at my arch linux finally,just record the modified step here.
1 cp QUAKE2_SOURCE_CODE_PATH/linux/makefile.i386 ../makefile
2 Modify the makefile.set MOUNT_DIR=your quake2 source code path
3 Find "QUAKE2_OBJS = ",appending following code
$(BUILD_DIR)/client/cl_newfx.o
4 Appending this sentence relevantly:
$(BUILD_DIR)/client/cl_newfx.o : $(CLIENT_DIR)/cl_newfx.c
$(DO_CC)
5 at ctf/g_items.c line 43
modify this code block
static int jacket_armor_index;
static int combat_armor_index;
static int body_armor_index;
to
static jacket_armor_index=0;
static combat_armor_index=0;
static body_armor_index=0;
6 at linux/vid_menu.c modify all stricmp to strcasecmp
7 at linux/net_udp.c modify all stricmp to strcasecmp