Run Linux build

Hi all,

As our app nears its end of development cycle we decided to add Linux as a target. I don’t use it much these days as my job typically has me mired in Windows.

So I’m building the code on a Mac with M1 chip. For the linux build I selected Linux x86 64bit. The build is produced but my tester says he cannot run the build on Mint 64.

On my mac I can only install ARM based Linux so I tried building for the 32 bit ARM version and moved it over and it doesn’t start.

I have checked and I see that the app is set to run as a “program”.

Anyway is there a more up-to-date description of what is needed to get the Linux build running? Most posts are from quite some time ago.

Mark

Have you read the documentation here ?

Try running ldd on the CLI and see if/what errors are reported for missing libraries

https://linuxhint.com/use-ldd-command-in-linux/

Linux notes
Because various Linux distributions have different libraries installed by default, you may need to install additional libraries before your Xojo apps will run on Linux. At a minimum, Xojo requires these Linux libraries:

Always required
glib 2.0

glibc-2.11 (32-bit)

glibc-2.14 (64-bit)

libstdc++.so.6.0.13

libunwind8

Required for desktop
GTK+ 3 (3.4.1 minimum)

libwebkitgtk-3.0-0 (Used by HTMLViewer and thus the Documentation window and Messages panel).

Optional
libsoup 2.4 (URLConnection, URLConnection)

So tracing the app showed that all the libs seem to be resolved:

openat(AT_FDCWD, “/home/etamme/Downloads/genius/Linux 64 bit/Genius/Genius Libs/XojoGUIFramework64.so”, O_RDONLY|O_CLOEXEC) = 3

openat(AT_FDCWD, “/lib/x86_64-linux-gnu/libc.so.6”, O_RDONLY|O_CLOEXEC) = 3

openat(AT_FDCWD, “/lib/x86_64-linux-gnu/libgtk-3.so.0”, O_RDONLY|O_CLOEXEC) = 3

openat(AT_FDCWD, “/lib/x86_64-linux-gnu/libgdk-3.so.0”, O_RDONLY|O_CLOEXEC) = 3

openat(AT_FDCWD, “/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0”, O_RDONLY|O_CLOEXEC) = 3

But then the app throws a nil ref exception.

I will check that the above required libs are installed and at the right version.

If this is a desktop application, confirm that your window manager is Xorg, not Wayland.

2 Likes

The end user is said to be on Mint, so they should be alright there.

You said that “Run as a program” was checked. I presume you mean in the Properties pane for the .exe file, on their system.

What happens if your user does “chmod +x /path/to/file”?

Don’t you have access to an Intel machine ? You say you are “mired in Windows”. On a Windows machine, you can install Mint in Virtual Box and do the tests yourself.

https://www.virtualbox.org

Hi all, answer a few questions here:

  1. Mired in Windows. This is what I work in. I use a Mac (M1 machine) for personal use. I do have an x86 computer I can install Linux on. My comment was simply that I don’t use LInux much. So I am proceeding with a Linux install on my i5 NUC computer.

  2. chmod +x - I had another Linux power user friend who uses it for work every day try and he was the one that provided the strace output. So the program executed and went looking for libs. But then threw a nil ref exception. My suspicion is at the start of the app in “opening” I create some paths. I suspect that this is incorrect for Linux and that path is passed down to several options as a “FolderItem” and I think that maybe nil. Once I have LInux on my own NUC I will investigate this.

  3. I will try to confirm my Linux install is Xorg and not wayland but any advice on how would be helpful.

Thank you all for the answers and suggestions. I will have to work on this, this weekend due to lots of work pressures (windows). LOL

You can install the IDE under Mint and run the program with break on exception set.

With some luck, it will point to the nil exception location.

1 Like

Good idea. I will give that a shot.

https://documentation.xojo.com/api/compiler_directives/if…endif.html

If you find that it is the paths you can use the above to help in your code

And make sure they try launching from the command line. If it’s crashing right away, the error will appear in the terminal.

1 Like

This should be the first step that any Linux build sees.