Compiling under Linux

From Valve Developer Community
Jump to: navigation, search
Русский

Creating a Linux build of your multiplayer dedicated server or server plugin is not required, but does make it much more likely to be accepted by commercial server operators.

Note:This page assumes you are building for Source 2007 (Orange Box).

Building on Linux requires an existing Visual Studio project, which is converted to a makefile by Valve's vcpm tool ("Visual C++ Project to Make").

Getting Linux

If you are unsure which version of Linux to use, go for Ubuntu, which tries to be user-friendly. It has a "software centre" that makes installing packages simple, and can be run from a CD if you want to experiment (but you'll want to install it permanently before you start digging in).

Requirements

If you are running 64-bit Linux:

  • ia32-libs (or you will be told that 32-bit binaries don't exist)
  • GCC multilib for your GCC release
  • Make sure you have the 32-bit build of Xerces, if you haven't upgraded to Vprojtomake 2010.

Setting up

Bug: Don't use ~ for your home directory. Parts of the make process do not understand it.

Open sdk_root/linux_sdk/Makefile. Most of the config options here are straightforward, except for:

MOD_CONFIG
These values should come straight out of your VS project. Remove all whitespace. To build the 'My Server' project in release mode, this should read MyServer_ReleaseWin32.
GAME_DIR
To get this, you need to download a dedicated server from Valve. You need the orangebox game.
CC, CPLUS, CLINK
Change these to read "gcc -m32" or "g++ -m32", with quotes. If your system's default build of GCC is too recent, specify an older version with "gcc-4.2 -m32" or similar; check /usr/bin to see what you've got installed.
CPP_LIB
These files may not be where Valve think they are. To find them, browse to /usr/lib and search. 64-bit users will encounter two version of each file; choose the ones in the '32' folder.

Making

Once everything is configured correctly, you can build your mod by navigating to the linux_sdk folder and performing a make.

Note:If you've done a lot of development on Windows you are likely to encounter "No such file or directory" or "no rule to make target" errors (if you get a mess of errors, scroll up to the very first one). These should all be down to two easily-rectified issues:
  • Paths are case-sensitive in Linux. /Multiplayer is not the same as /multiplayer
  • Paths must delimited with / characters in Linux, not Windows' \.
Making these changes to your source files will not affect compiling on Windows.

Running

To run the mod perform make install to copy the server binary to your mod's folder, then cd into your dedicated server folder and do ./srcds_run with the appropriate -game parameter.