Skip to content

Build Ubuntu

Randall C. O'Reilly edited this page Mar 16, 2021 · 1 revision

Build from Source: Ubuntu

See Dependencies for list of all the external dependencies.

Step 1: Update and get dependencies

First, become root:

$ sudo su

And install aptitude:

$ apt -y install aptitude

And update your system:

aptitude update -y

And install upgrades:

aptitude upgrade -y

Next, install libraries:

$ aptitude install -y qt5-default qttools5-dev libqt5webkit5-dev qtlocation5-dev libqt5designer5 qtdeclarative5-dev libqt5sensors5-dev qtmultimedia5-dev libqt5svg5-dev libcoin80-dev cmake g++ libreadline6-dev libgsl0-dev zlib1g-dev libpng12-dev libjpeg-dev libncurses5-dev libsvn-dev libsndfile1-dev mercurial python-pip subversion devscripts csh pkg-config libode-dev

Finally, exit the root user:

$ exit

Step 2: Build the quarter library and install the package

First, grab emergent's source code:

$ git clone https://github.com/emer/cemer

Next, run a script to build Quarter and turn it into a Debian package:

$ package/ubuntu-motu-quarter

And install it:

$ sudo dpkg -i /tmp/libquarter0_1.0-*ubuntu1_*.deb

Step 3: Build and install emergent

Start with an optimized build (in cemer source dir):

$ ./configure --qt5 --clean --webkit --suffix=_svn
$ cd build_svn
$ make -j4

And install it to /usr/local/bin/emergent

sudo make install

If you have time, also do a debug build:

$ ./configure --qt5 --clean --webkit --enable-debug
$ cd build_dbg
$ make -j4

And install it to /usr/local/bin/emergent_dbg

sudo make install

Step 4: Update your path

Open up ~/.bashrc and make sure that your PATH and LD_LIBRARY_PATH environment variables look something like this:

export PATH=/bin:/usr/bin:/usr/local/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib

And update your environment:

$ source ~/.bashrc

Step 5 - Run emergent

$ emergent

For debugging:

gdb -ex=run emergent_dbg

Troubleshooting the Build Process

If you are running Ubuntu Trusty (14.04) run this:

$ aptitude install -y libode-sp-dev

If you encounter errors regarding libserf linking against symbols found in libssl, set this environent variable before running configure, which will tell the linker to go ahead and link in the static version of libssl:

export CMAKE_SHARED_LINKER_FLAGS=-l:libssl.a

If you have issues with configure finding libGL.so, perhaps you installed the nvidia native binary driver, in which case you need to manually make symlinks from the libGL.so.* files in /usr/lib/ to /usr/lib/x86_64-linux-gnu.

If you get error: ld terminated with signal 9 [Killed], use a system with more memory.

If you get error: CPU you selected does not support x86-64 instruction set, this can be solved by re-running configure in non-native mode:

cd ~/emergent && ./configure --not-native && cd build && make

If you get warning: inline function ‘’ used but never defined [enabled by default] or Wno-undefined-inline you can ignore this error.

If a file that was present during the last time cmake configured itself is subsequently removed, you'll get this kind of install error:

CMake Error at prog_lib/cmake_install.cmake:31 (file):
  file INSTALL cannot find
  "/Users/oreilly/emergent/prog_lib/ObjectsEnv.prog".
Call Stack (most recent call first):
  cmake_install.cmake:105 (include)

To fix this, in your build directory, do:

ccmake ../

then hit c (configure) and then g (generate) then e (exit) sudo make install