Compile ZDoom on Linux

From ZDoom Wiki

Jump to: navigation, search

This tutorial will guide you on the compilation of ZDoom on Linux. Commands are shown in the tutorial that should be entered into a terminal. Commands beginning with `su` and `sudo` will require root / admin privileges, as will most likely any package installation.

Contents

Install dependencies

ZDoom needs certain dependencies in order to compile. These versions are known to work with recent ZDoom versions:

  • gcc 4.1–4.3 or 3.4.6
  • cmake 2.6 or 2.4
  • fmod 4.24
  • SDL 1.2.8–1.2.13
  • libjpeg (optional - will be statically compiled in if not found)
  • nasm 2.03.90–2.05.01 or 0.98.39 (optional)
  • yasm 0.7.1–0.8.0 (optional)
  • GTK2 (optional)

You can presumably use any higher versions of these programs, however that might not be the case.

  • In Debian, or derivatives such as Ubuntu, run:
sudo apt-get install g++ zlib1g-dev libsdl1.2-dev libjpeg62-dev nasm yasm tar bzip2 libgtk2.0-dev cmake
  • On OpenSUSE:
yast2 -i gcc-c++ zlib-devel SDL-devel libjpeg-devel nasm gtk2-devel cmake

(FMOD available in RPM format from third-party repositories. At your option, you can also use zypper instead of yast2.)

  • In Ubuntu, the build-essential package is needed, so run:
sudo apt-get install build-essential
  • In Gentoo, run:
sudo emerge -avn sys-devel/gcc media-libs/fmod media-libs/libsdl dev-lang/nasm

Make sure the versions of these packages are equal to or greater than one of the versions listed above.

Install FMOD

ZDoom uses the FMOD Ex library for audio. In many distributions, this will need to be installed manually. Check your system's package manager first to see if FMOD Ex is supported, and install it from there if it is and skip this section. Otherwise run the following commands to install FMOD Ex:

wget http://www.fmod.org/index.php/release/version/fmodapi42412linux.tar.gz
tar -xvzf fmodapi42412linux.tar.gz

Note that if you are on a 64-bit system, you will want the 64-bit version; use the following commands to get that instead. (You can have both the 32- and 64-bit versions installed concurrently, and this may be desirable if you wish to be able to use FMOD Ex with both 32- and 64-bit applications.)

# to get the 64-bit version
wget http://www.fmod.org/index.php/release/version/fmodapi42412linux64.tar.gz
tar -xvzf fmodapi42412linux64.tar.gz

Now that the library has been downloaded and extracted, the actual installation:

cd fmodapi42412linux # or fmodapi42412linux64 for the 64-bit version
sudo make install

You will be prompted for your password, and assuming you have correct administrator privileges, FMOD Ex will be installed.

Get the ZDoom Sources

It is recommended that you use a recent version from the Subversion Repository to compile, but you may use an older version's source from the ZDoom Downloads Page if desirable. Note that compilation steps may differ for older versions.

To obtain the latest version from the SVN, use the following command:

svn checkout http://mancubus.net/svn/hosted/zdoom/zdoom/trunk

A directory trunk will be generated containing the latest source code. In the future, the code may become out-of-date compared to newer code available in the SVN. To update to the latest code at any time, use the following command from inside the trunk directory:

svn update

Compile

ZDoom uses CMake to handle makefile generation on Linux, so simply running make will not build zdoom. First, we need to go into the trunk directory where the source is, if we aren't there yet:

cd trunk

Next, we need to make a directory for CMake to work from, and compile to.

mkdir release
cd release

Invoke CMake to parse the ZDoom source and get ready for compiling:

cmake -DCMAKE_BUILD_TYPE=Release ..

It may be necessary to tell it where the FMOD files are located, for example:

cmake -DFMOD_INCLUDE_DIR=/usr/lib/fmod-4.23/include/fmodex
      -DFMOD_LIBRARY=/usr/lib/libfmodex-4.23.so

Compile the code from inside the release directory.

make

Start Playing ZDoom

Assuming all goes well, an executable zdoom and the zdoom.pk3 file will be generated in the release directory. To start zdoom, the following command should work:

./zdoom

If ZDoom complains you do not have any IWADs set up, make sure that you have your IWAD files placed in the same directory as zdoom, in $HOME/.zdoom, or /usr/local/share.

Troubleshooting

If ZDoom starts but immediately closes with the following messages in the terminal:

...
Init Playloop state.
Setting up sound.
S_Init
Checking network game status.
player 1 of 1 (1 nodes)

Then you can either start ZDoom without music:

zdoom -nomusic

Or install Timidity (a program to play MIDI and MOD music files in software). To install Timidity...

  • ... on any Debian-based distribution, run:
sudo apt-get install timidity
  • ... on openSUSE:
yast2 -i timidity or zypper in timidity
  • ... on Gentoo, run:
sudo emerge -avn timidity++

Developing

This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or submitting code changes or fixes for inclusion. This section is intended for more advanced users who may be unfamiliar to CMake or debugging on Linux systems.

Debugging

Maybe you have found a way to make zdoom crash, and are interested in debugging it. Inside the trunk directory, create a new directory debug.

mkdir debug
cd debug

Invoke CMake to set up for compiling, but this time, the build type is set to Debug.

cmake -DCMAKE_BUILD_TYPE=Debug ..

After CMake is done, run make as usual.

To run zdoom under a debugger such as gdb, use the following command:

gdb zdoom

Now gdb should have you in its own prompt. You probably want to log the output, so lets output to a file log.txt:

set logging on log.txt

Now start zdoom by typing in run, and pressing enter. (Put any arguments to zdoom after run .) If zdoom crashes, gdb may be able to tell you the source file and line number it crashed in. Typing in the command backtrace will produce information telling the last function calls, showing how execution got to the point where it crashed. All output will be copied into the log.txt, which can then be scrutinized later, or perhaps posted to the Bugs Forum for other developers to look at.

To get out of gdb's prompt, typing quit will exit it.

Links

Personal tools