Saleae

Issues with libstdc++ or libcrpyto on Linux (Ubuntu 16 & 19)

If you have any suggestions or feedback on how to package applications for Linux, please let us know in the comments!

Hello!

I’ve just spent some time working on addressing the issues with the latest alpha software running on Linux, but it will take a little while longer before we can roll out a proper solution.

Specifically, the latest alpha release, alpha 8, will not run on Ubuntu 16.04 because the default installed version if libstdc++ is not modern enough. At the same time, the alpha won’t run on Ubuntu 19.04 because that ships with a newer, non-backwards-compatible version of libcryto from openSSL.

Out of the box, the alpha happily runs on Ubuntu 18.04.

There are two root issues. libcrypto is the easiest to solve. I just need to put in some time building openSSL manually (the static libssl-dev version was not built with -fPIC). Future releases will statically link against openSSL.

libstdc++.so.6 is a slightly more complicated story. Originally, I hoped we would be able to set the LD_LIBRARY_PATH from our electron application before attempting to load our C++ back-end library. After spending a few hours on it I realized that even after setting LD_LIBRARY_PATH successfully before loading the back-end library, it was too late in the process - electron itself had already loaded the system’s default libstdc++, which we needed to avoid completely on earlier distributions.

Unfortunately this means that Ubuntu 16.04 support will need to wait until we implement a different solution, likely similar to this one: https://github.com/darealshinji/AppImageKit-checkrt/

We previously used that package with the previous, AppImage based releases, before our switch to Electron. We might just switch back to AppImage again if I can find an easier way to package AppImages with Electron.

In the mean time, if you’re using Ubuntu 16.04 and would like to use the alpha release now, you can either install gcc-7 or simply download this copy of libstdc++ and libgcc_s from my machine, and add the path to the containing folder to LD_LIBRARY_PATH.

For Ubuntu 19.04 users, you can snag a copy of libcrypto.so.1.0.0 from somewhere else or just use this copy, and also pace it’s containing folder in LD_LIBRARY_PATH

We’ll be working on this, as well as other packaging issues soon. Another large issue with the current Linux packages is that they don’t include a copy of the udev rules file that’s required to use our devices without root permissions. In the mean time, you can find this udev file in the production release, 1.2.18, at www.saleae.com/downloads.

Looking forward to getting this fixed!

Kind Regards,
Mark

Examples:

tar xf gcc-7-libs.tar.gz
export LD_LIBRARY_PATH=${PWD}
logic
crypto.tar.gz
export LD_LIBRARY_PATH=${PWD}
logic