Compiling under Linux

From Valve Developer Community
Revision as of 04:17, 27 August 2016 by GroundSnake (talk | contribs)
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.png 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).


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.png 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:

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.
To get this, you need to download a dedicated server from Valve. You need the orangebox game.
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.
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.


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

Note.png 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.


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.