Compile Firestorm on Ubuntu 20.04 (Focal Fossa) – A guide to compiling the Firestorm Viewer for Opensimulator. Official Firestorm guides are available on the Firestorm Wiki. However, they have not been updated for Linux in a few years. This guide shows how to successfully compile the viewer using Ubuntu Focal Fossa.

Compile Firestorm on Ubuntu 20.04- Folder structure

Let’s start with creating a sane directory tree structure. This structure can be changed, however, if it is, the paths used further down will require updating to match. The structure used throughout is:

└── firestorm
    ├── 3p-fmodstudio
    ├── fs-build-variables
    ├── phoenix-firestorm
    ├── pythod2-pip
    └── vorbis

The following lines assume you have no ‘src’ folder in your home directory. Adjust these instructions if this folder already exits.

cd ~/
mkdir src
cd src
mkdir firestorm
cd firestorm

Compile Firestorm on Ubuntu 20.04 – Install The Dependencies

Installing the tools in the Focal Fossa Repository

This is slightly different from installing the dependencies on previous versions of Ubuntu. Package names for python2 have been changed and in some cases culled utterly. Additionally, GCC-6 and G++6 are no longer in the repositories for Focal Fossa.

sudo apt install --install-recommends bison bzip2 cmake curl doxygen flex gdb m4 git moreutils pkg-config python2 python2-dev python2-all libpython-all-dev

Installing Python – Pip

Start by creating a new folder inside ‘firestorm to download the python-pip file into. Once the folder is created moved into the folder, download the python-pip file and run it.

cd ~/src/firestorm
mkdir python-pip
cd python-pip

curl --output

sudo python2

Install Autobuild

sudo pip2 install autobuild

Install GCC-6 and G++-6

To install GCC-6 and G++6 the repository for Ubuntu Bionic needs adding to the sources.list file. After installation, it is important to comment out or remove the entry. Leaving the bionic repository available can allow installation of python packages which break the Focal Fossa python packages.

Add the repositories to your sources.list file.

sudo nano /etc/apt/sources.list

Add the following lines to the bottom

deb bionic main restricted universe multiverse
#added to install gcc-6

save and exit with


Install GCC-6 and G++6

sudo apt-get update
sudo apt-get install --install-recommends gcc-6 g++-6

IMORTANT – use nano like above to remove the or comment out the Bionic repository from the sources.list file. Once its changed save and do another update.

sudo nano /etc/apt/sources.list
#deb bionic main restricted universe multiverse
#added to install gcc-6
sudo apt-get update

Update the GCC and G++ Alternatives.

Please make sure you replace any existing alternatives set. In most cases, it is enough to add GCC6, 8 and 9. Custom systems may need to add others back. Clear all existing GCC alternatives then add-in again. Failing to add GCC 8 and 9 back as alternatives may cause package manger issues.

update-alternatives --remove-all gcc 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 6 --slave /usr/bin/g++ g++ /usr/bin/g++-6 --slave /usr/bin/gcov

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9

update-alternatives --config gcc

On the menu select GCC6, just remember to set it back to 9 when the compilation is finished.

Install the rest of the required libraries

sudo apt install --install-recommends libalut-dev libapr1-dev libaprutil1-dev libatk1.0-dev libboost-all-dev libcairo2-dev libcollada-dom2.4-dp-dev libcurl4-openssl-dev libdbus-glib-1-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libgtk2.0-dev libjpeg-dev libjsoncpp-dev libnghttp2-dev libogg-dev libopenal-dev 
libpangox-1.0-dev libpng-dev libsdl1.2-dev libssl-dev libstdc++6 liburiparser-dev libvorbis-dev libx11-dev libxinerama-dev libxml2-dev libxmlrpc-epi-dev libxrender-dev zlib1g-dev 

Download the Firestorm build variables

cd ~/src/firestorm

git clone

Compile Firestorm on Ubuntu 20.04 – Download Vorbis

Credit for the vorbis file goes to Marissa Orloff. She states that when recompiling this the following changes were made: in ogg_vorbis in line 91 needs to be edited to remove LL_release. aclocal and automake need symlinks 1.15 > 1.16

cd ~/src/firestorm
mkdir vorbis
cd vorbis


md5 of the download: d888b4916006c28471b4f103854526c3

Download and compile Fmod

cd ~/src/firestorm

git clone

Also, download Fmod studio API from the fmod website (you will need to make an account) and put the downloaded file into ‘~/src/firestorm/3p-fmodstudio’ folder. At the time of writing the latest version is 2.00.09.

Next edit the file (located inside the 3p-fmod) folder to match the version just download. The text below is a sample from the very top of the original at the time of writing

#!/usr/bin/env bash


This needs updating to match the version of Fmod Studio download, if that is 2.00.09 update accordingly

nano ~/src/firestorm/3p-fmodstudio/
#!/usr/bin/env bash


Save the changes and exit then compile 3p-fmod

cd ~/src/firestorm/3p-fmodstudio
autobuild build -A 64 --all
autobuild package -A 64

The output at the end will look similar to:

wrote  /home/username/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2
md5    30c4b8096b6268617bcdc2f6ee6b36d3

The path will be different as it will match your system. Make a note of the information; it is needed later.

Compile Firestorm on Ubuntu 20.04 – Download and Compile the Firestorm source code

cd ~/src/firestorm
git clone

A little preparation work

cd ~/src/firestorm/phoenix-firestorm
source ../fs-build-variables/convenience Release

export AUTOBUILD_VARIABLES_FILE=~/src/3rdParty/fs-build-variables/variables

Now a couple of edits are required to the autobuild.xml. These are done using ‘autobuild installables edit’.

autobuild installables edit item platform=platform=linux64 hash= url=file////

It is easiest to prepare these in a text editor. Use the information at the end of the 3p-fmod compile to create a line similar to the one below (the hash will be different). If your system is using a different path that will also be different.

autobuild installables edit fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:////~/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2

Do the same for the vorbis file downloaded earlier (the hash will be the same this time).

autobuild installables edit ogg_vorbis platform=linux64 hash=d888b4916006c28471b4f103854526c3 url=file:////~/src/3rdParty/vorbis/ogg_vorbis-1.3.3-

Configure and then compile

If you wish to add a channel name to the viewer such as the name of your grid change “MyChannelName” to what ever you like.

autobuild configure -A 64 -c ReleaseFS_open -- --package --fmodstudio  --chan MyChannelName --clean
autobuild build -A 64 -c ReleaseFS_open --no-configure

A couple of possible variations on this are:

--no-opensim (removes OS support and you will get an SL viewer only)

--avx (build with AVX CPU instruction support (should be safe as long as your CPU supports that instruction set)

Compile Firestorm on Ubuntu 20.04 – The packaged files

All that’s left is to copy and extract the tarball. Look inside the following folder:


Inside it, there will be a file which ends with .tar.xz. That file is the compressed tarball for the viewer. Don’t forget to subscribe to the RSS feed for more updates like this one.

This article has 13 comments

  1. Froufrou Reply

    Excelent tutorial, except some parts got me a little bit confused. But I saw some tips that might be of help on your page, like the FMOD autobuild procedure

    cd ~/src/firestorm/3p-fmodstudio
    autobuild build -A 64 –all
    FMOD_RESULT=`autobuild package -A 64`
    FMOD_URL=`echo $FMOD_RESULT | cut -d ‘ ‘ -f 4`
    FMOD_HASH=`echo $FMOD_RESULT | cut -d ‘ ‘ -f 6`

    cd ~/src/phoenix-firestorm
    autobuild installables edit fmodstudio platform=linux64 hash=${FMOD_HASH} url=file://${FMOD_URL}

    And extracting the tarbal:
    cd ~/src/phoenix-firestorm/build-linux-x86_64/newview
    FS_TARBAL=`ls Phoenix*.tar.xz`
    tar -vxf ${FS_TARBAL}
    cd `basename ${FS_TARBAL} .tar.xz`

    Credits too:

  2. Connie Reply

    Going through this now, but I should warn you python2-all isn’t in Ubuntu 20.04 – there is a python-all (which says it pulls in all Python 2 packages) so I assume that’s the right one.

  3. Connie Reply

    This I assume should be “firestorm” instead of 3rdParty:

    export AUTOBUILD_VARIABLES_FILE=~/src/3rdParty/fs-build-variables/variables

    And this:

    autobuild installables edit fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:////~/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2

    The shell doesn’t expand ~ in this context, I’d just use $HOME, eg:

    autobuild installables edit fmodstudio platform=linux64 hash=30c4b8096b6268617bcdc2f6ee6b36d3 url=file:///$HOME/src/firestorm/3p-fmodstudio/fmodstudio-2.00.09-linux64-201822306.tar.bz2

    Still working through it, the guide is great so far, there is no way I’d have figured this out myself…

  4. Connie Reply

    (likewise this: autobuild installables edit ogg_vorbis platform=linux64 hash=d888b4916006c28471b4f103854526c3 url=file:///$HOME/src/firestorm/vorbis/ogg_vorbis-1.3.3-
    x64-200930615.tar.bz2 should replace the Vorbis line you add, this one both has 3rdParty *and* ~!)

  5. Connie Reply

    The build configuration command failed because it couldn’t find Python, as the initial install of Python doesn’t set it as default, so this fixed that:

    sudo update-alternatives –install /usr/bin/python python /usr/bin/python2.7 1

  6. Connie Reply

    OK, so you’re probably getting sick of me now 😉 Anyway it doesn’t compile. What I get are errors along these lines:

    /home/nicky/source/p64_3p-boost/boost/libs/regex/build/../src/icu.cpp:480: undefined reference to `u_charType_48′

    (I don’t know who nicky is? That path makes no sense….)

    The one thing I can think of, other than that, is that all the missing symbols seem to be related to icu, which is version 6.6 on Ubuntu 20.04. So is there a missing option to set the ICU version during configuration?

    • sarapayne Reply

      I am sorry Connie, at the time I wrote this it worked but I have had no time to workout what changed since. I thought I updated the title of this to currently not working. I will do so now.

      • Connie Reply

        Thanks, I will continue to try, might be because the one area I’m diverging from the instructions is getting a specific version of the source code (git clone -b Firestorm_6.3.9_Release, but that shouldn’t make any difference, unless the source is broken somehow, which would be weird.

        The other issues I mentioned though are definitely worth doing. And your instructions closely match the other set of instructions given minus the issues I mentioned, so we’re definitely on the right track.

        Thanks for your guide, wouldn’t have gotten this far without it.

      • Connie Reply

        Same issue alas. Wondering if it’s because I’m getting a specific version of the FS code (git clone -b Firestorm_6.3.9_Release rather than latest (but I want to start with something I know works, right?) That seems to be the only place I’m diverging from the instructions.

        • Kasdan Reply

          @Connie Maybe Try not to diverge from the instructions than. Firestorm doesn’t release versions that don’t work. I suggest starting over from start till finish. Remove all current downloaded files on your system just to make sure nothing is interfering. After you got your first compiled version running. Than you can start experimenting on your own.

          • Connie

            Well the entire point of downloading a specific version of Firestorm was to compile something that was known to work. In theory downloading “the latest” means downloading bugs and possibly a non-compilable version.

            Nonetheless, I started again from scratch, downloaded the default, and… it failed, for the same reasons. And the more I look at it, the more it’s just not possible any of you were able to compile it on a fresh Ubuntu 20.04 install, because right now the current versions of Firestorm download .a files (the Boost libraries) that absolutely definitely contain bindings for version 4.8 of ICU (which are hard coded.) And Ubuntu 20.04 doesn’t contain that version even as an option. My *guess* is that you’ve been upgrading your Ubuntu installs from an older version that had the 4.8 version installed. It’s the only explanation I can find for it working.

            So I’m kinda at a loss here. I know the problem. I know all I need to do is point the build process at the 4.8 ICU version having built it myself, but… the Firestorm build process is convoluted and I have absolutely no idea what files I’m supposed to modify to tell it to add that library.

            Maybe I’ll just give up and create a Ubuntu 16.04 LXC image to do it, but that seems like cheating and not solving the underlying problem.

  7. Kasdan Reply

    I used a fresh Ubuntu 20.04 install to compile one of the latest FS releases not longer than a week ago. How do you check the ICU version?

Leave a Comment

Your email address will not be published. Required fields are marked *