Installing DeSmuME from source on Linux

From DeSmuME
(Difference between revisions)
Jump to: navigation, search
(Enabling compiler optimizations)
(Known issues)
Line 76: Line 76:
  
 
== Known issues ==
 
== Known issues ==
If you have a crash on a 64bit environment while disabling/enabling sound during gameplay, deinstall agg (libagg-dev on Debian) and rebuild. This should solve the problem.
+
 
 +
* If you have a crash on a 64bit environment while disabling/enabling sound during gameplay, deinstall agg (libagg-dev on Debian) and rebuild. This should solve the problem.
 +
 
 +
* Some people on MacOS X have a broken build environment, mixing pieces from fink / macports / source installation / etc... To workaround that you can try passing the needed include paths to autoreconf. Modify autogen.sh adding -B/my/path/ to autoreconf invocation, the path should be -B/sw for fink and -B/opt/local for macports. After the modify rerun ./autogen.sh and ./configure.

Revision as of 12:43, 3 July 2010

Contents

Supported compilers

On the Linux platform, only the GCC compiler and toolchain is supported.

Pre-requisites

The Linux version of desmume comes in source code form only, and if your distribution does not package it or is packaging an old version you will have to compile the sources yourself. In order to compile desmume from a source tarball you'll need at least these packages:

gcc make libglib2 libgtk2 libglade gettext libsdl zlib intltool agg libasound

If you're compiling from svn, you'll need those one as well:

autoconf automake

If you want 3d engines alternatives to software rasterizer you may install libgtkglext or libosmesa.

On debian you should have all the requirements installed with this command:

sudo apt-get install build-essential autoconf automake libgtk2.0-dev libglu1-mesa-dev libsdl1.2-dev libglade2-dev libgtkglext1-dev gettext zlib1g-dev libosmesa6-dev intltool libagg-dev libasound2-dev

desmume requires libgtk 2.8 or higher.

Install desmume from source tarball

Go to http://desmume.org/download/ to check out the latest version of desmume available. At the time of writing the latest stable release of desmume is 0.9.5.

Download the tarball and extract it:

Enter the desmume directory and build the source:

  • cd desmume-0.9.5
  • ./configure
  • make
  • sudo make install

If you are not using sudo the last command needs to be run as the 'root' user.

If you want to use offscreen mesa instead of gtkglext as alternative 3d engine use the ./configure --enable-osmesa instead of just ./configure.

Install desmume from svn

You need subversion to checkout latest unreleased version of desmume. On debian you can install it with:

sudo apt-get install subversion

Once you have subversion installed and checked you have the svn command type:

svn co https://desmume.svn.sourceforge.net/svnroot/desmume/trunk/desmume desmume

Enter the desmume directory and build the source:

  • cd desmume
  • ./autogen.sh
  • ./configure
  • make
  • sudo make install

If you have updated your svn tree with 'svn update', then be sure to run the 'make clean' command before you start.

If you want to use offscreen mesa instead of gtkglext as alternative 3d engine use the ./configure --enable-osmesa instead of just ./configure.

Enabling compiler optimizations

If you want to optimize the build on Linux, you should set the C++ compiler options to enable specific optimization for your processor:

You can do this by setting the CXXFLAGS variables like shown below:

CXXFLAGS='-O2 -march=native' ./configure

You may need to set the '-march=native' for example because by default, gcc under 32-bit Debian builds code that works on the 486 (which doesn't support SSE).

On x86 / x86-64 machines you can squeeze the processor a bit more using:

CXXFLAGS='-O2 -march=native -mfpmath=sse' ./configure

Known issues

  • If you have a crash on a 64bit environment while disabling/enabling sound during gameplay, deinstall agg (libagg-dev on Debian) and rebuild. This should solve the problem.
  • Some people on MacOS X have a broken build environment, mixing pieces from fink / macports / source installation / etc... To workaround that you can try passing the needed include paths to autoreconf. Modify autogen.sh adding -B/my/path/ to autoreconf invocation, the path should be -B/sw for fink and -B/opt/local for macports. After the modify rerun ./autogen.sh and ./configure.
Personal tools