Monkey won't start on Ubuntu SOLVED

Monkey Forums/Monkey Programming/Monkey won't start on Ubuntu SOLVED

Fedor(Posted 2013) [#1]
On my Ubuntu machine I've started a first time installation of Monkey. I am running Ubuntu 13.04

- I've donwloaded v63 and unpacked it
- I've downloaded version 72b and merged it with the v63 version
- I've set the permissions of all linux-executables to allow execution

What do I do wrong here? It just won't start. No messages or other feedback.


Amon(Posted 2013) [#2]
Try not merging them first. v63 is vastly different to v72b.

Also in the bin folder where monkey is make sure you have set each option.


Fedor(Posted 2013) [#3]
@Amon: can I use 72b, or any other update as a standalone installation? What would be the installation for a fresh Ubuntu system?

btw: I did do the bin-files like Ted as well...


Raph(Posted 2013) [#4]
Fedor, each version is a standalone installation.

And what Amon means is that you need to go into MonkeyPro72b\bin and edit config.linux.txt for all the paths you need.


wiebow(Posted 2013) [#5]
This might hepl as well: https://docs.google.com/document/d/1ksiQhdOWCfDLo0oHDniDZiMgX5n0_Py0FOM1Nb_rphI/edit#heading=h.nnast8ypfb3f


Fedor(Posted 2013) [#6]
I tried as Raph and Amon suggested: set the executables as executables and changed the config file.

Now I get:

Could not display "Monkey".
There is no application installed for executable files.
Do you want to search for an application to open this file?

I've checked and double checked but I did mark it as an executable for sure.


Fedor(Posted 2013) [#7]
...I now - again - unpacked the distribution. Set the config file and set the executable-bits but now it doesn't do anything - again.


Raph(Posted 2013) [#8]
I have never used Ubuntu, but Monkey isn't the exe you want. Ted is the default IDE. Monkey just runs transparently in the background when you compile. If you used a different IDE (not sure there are any for Linux) you would just point that IDE to monkey.exe.

Try launching Ted, see if you can open any of the examples in the bananas folder and build and run them as HTML5.


Fedor(Posted 2013) [#9]
@Raph: monkey.exe is the windows-executable. And in all descriptions I've red Monkey (the linux app) is the starter-app for TED.

btw: TED does not startup either... the only linux application that is willing to fire is mserver.


Fedor(Posted 2013) [#10]
...next thing I've tried is starting Monkey or Ted from the command line. Monkey still did not do anything but Ted gave me the following error:


./Ted: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory


Ubuntu software center says I 've already have LibQtWebKit4 installed bit still Ted does not find it.


Fedor(Posted 2013) [#11]
GOT IT!

In Software Centre I've installed the i386-version of LibQtWebKit. Now Ted starts and everything seems to work fine. Banana's compile into HTML5 apps and work.

Booting Ted seperately still gives some errors on the command line but I think they can be ignored.

This one can be considdered closed, lesson learned here is that starting from the command line gives more feedback.


dawlane(Posted 2013) [#12]
It's a pity I didn't see this two days ago. As you've had to install i386 version of LibQtWebKit, I take it your using the 64 bit version of Ubuntu (this you should have mentioned in the opening post and would have save a lot of time).
The version of Ted that comes with monkey is a 32 bit binary and not all of the dependencies are installed (only a few 32 libraries get installed). Installing LibQtWebKit installs a few others.

You could get one of two errors (actually these are warnings as an error would stop the Ted from starting)
QGtkStyle could not resolve GTK. Make sure you have installed the proper libraries. (you shouldn't see this on a 32 bit OS as the library is installed)
Xlib: extension "RANDR" missing on display ":0"

To see a list of dependencies that Ted uses type
ldd Ted | awk '{print $1}'

You can install Qt Creator along with a few extra dependencies and rebuild Ted for a 64 bit OS if you so wish.

Another thing you must be made aware of is that c++ and glfw builds will be compiled into 64 bit binaries. To build binaries for 32 bit OS's you need to do few things.

First: Install g++-multilib to allow cross compilation.

Second: Install the 32 bit dependencies. You can hunt them down individually by adding :i386 (e.g. libopenal1:i386) to the end of each library (not an easy task if there isn't a dependency resolver) or install all the 32 bit libraries in one go with ia32-libs-multiarch (big download about 337MB if I remember). One point I would like to make here is that you can install the 64 bit development libraries because the header files are the same for both 32 bit and 64 bit, but you must install the the 32 bit libraries like as mentioned above if you still wish to develop for 64 bit OS. Installing the 32 bit development libraries will over-ride the 64 bit library links in favor for the 32 bit versions.

Third: You will need to set up some system links in /usr/lib32 to point to these new 32 bit libraries (GL/X11/OpenAL). Some 64 bit installs wouldn't have this directory by default but it should be present in Ubuntu / Linux Mint.
You create a link by using the `ln` command. So to link the OpenAl library you would use
ln -s /usr/lib/i386-linux-gnu/libopenal.so.1 /usr/lib32/libopenal.so

Fourth: You have to edit the makefile that can be found in the gcc_linux template directory to tell the compiler to build a 32 bit binary. You usually do this by adding -m32 to CPPFLAGS/LDFLAGS.

You could change the makefile from a pre-built application in the .build directory but you will have to go though each of the directories to remove the object (.o) files that are created in glfw, openal, stb. Not doing this makes the linker 'ld' go mad at you for trying to link a new compiled 32 bit object file to previous compiled 64 bit object files.


AdamRedwoods(Posted 2013) [#13]
thank you for this. i never, ever, ever, ever would have known what to do!
(sticky? docs? readme.linux?)