TRACE32 GUI Shared Library


The embedded tools company



 

Since 26 June 2019: GUI specific software parts are now in a Shared Library


Windows: I get a message box saying "t32screenwin.dll" not found. What should I do ?

In your update archive or in your installation image, there should be the files:

  • bin\windows\t32screenwin.dll (32-bit DLL)
  • bin\windows64\t32screenwin.dll (64-bit DLL)

Copy these files into your TRACE32® installation folder into the subdirectories "bin\windows\" and "bin\windows64\" respectively.

Linux: I get some output in the shell, which says "t32screenqt5.so" can't be loaded. What should I do ?

In your update archive or in your installation image, there should be the files:

  • bin/pc_linux/t32screencde.so (32-bit Shared Object file)
  • bin/pc_linux/t32screenqt4.so (32-bit Shared Object file)
  • bin/pc_linux64/t32screencde.so (64-bit Shared Object file)
  • bin/pc_linux64/t32screenqt4.so (64-bit Shared Object file)
  • bin/pc_linux64/t32screenqt5.so (64-bit Shared Object file)

Copy these files into your TRACE32® installation folder into the subdirectories "bin/pc_linux/" and "bin/pc_linux64/" respectively.

t32screenqt5.so is only available for 64-bit Linux.

 

Background information


Customers use very old Linux distributions and very new Linux distributions.

Very old Linux distributions do not support QT version 5.x (a GUI framework used by the TRACE32® software).
Very new Linux distributions do not support QT version 4.x.
Both versions are incompatible to each other.

Additionally some customers use a MOTIF GUI under Linux.

In the past Lauterbach provided two executable flavors for each target architecture for Linux:

  • t32m* to run with a MOTIF GUI.
  • t32m*-qt to run with a QT version 4.x GUI.

Because the latest Linux distributions do not support QT version 4.x anymore, Lauterbach could have provided yet another executable flavor, called "t32m*-qt5"; but this would have been inconvenient and would have required yet more disk space for an installation.

Lauterbach now implemented a different mechanism to support different GUI frameworks:
The GUI specific software parts were split out into a shared library (a DLL for Windows, ".so" files for Linux).
When the TRACE32® software starts, it now looks for these shared libraries and tries to load them.
If no shared library is found, then an error is reported and the TRACE32® software aborts operation.

For Linux, TRACE32® tries to load shared libraries in the following order:

  1. t32screenqt5.so (QT version 5.x GUI)
  2. t32screenqt4.so (QT version 4.x GUI)
  3. t32screencde.so (MOTIF GUI)

TRACE32® uses the first library, which it is able to load successfully.
This mechanism works like an auto-detection:

  • If your Linux distribution does not support QT version 5.x, loading t32screenqt5.so will fail and TRACE32® will continue by trying to load t32screenqt4.so.
  • If your Linux distribution does not support QT version 4.x, loading t32screenqt4.so will fail and TRACE32® will continue by trying to load t32screencde.so.
  • If your Linux distribution also does not support MOTIF, loading t32screencde.so will fail and TRACE32® will finally abort with an error message.

t32screenqt5.so is only available for 64-bit Linux.

For Windows the same mechanism was implemented. For Windows TRACE32® currently looks for a shared library called

  • t32screenwin.dll

If this DLL is not found, TRACE32® will abort with an error message box.

 

User configuration via T32SCREENSO environment variable


NOTE: If you have a regular installation, none of the following should be necessary. The following instructions are only to adapt to handcrafted TRACE32® installations, where you need extra flexibility.

Per default TRACE32® looks for the DLL/SO file(s) in the same directory, where the executable is located.

For Linux as described above TRACE32® will try to load GUI shared libraries in the order "t32screenqt5.so", "t32screenqt4.so", "t32screencde.so".

Users can change this behavior by setting an environment variable called T32SCREENSO.

If set, TRACE32® will interpret the environment variable T32SCREENSO as a colon (:) separated list of shared library files to try out.

Example for Linux:
export T32SCREENSO=t32screencde.so:t32screenqt4.so With this environment variable content:

  • TRACE32® will first try to load t32screencde.so (from the same directory where the executable is located).
  • If the above fails, TRACE32® will then try to load t32screenqt4.so.
  • If both of the above fail, TRACE32® will abort operation.

Additionally you might use absolute paths in the T32SCREENSO environment variable. Example for Linux:
export T32SCREENSO=/opt/t32/t32screenqt4.so With this environment variable content:

  • TRACE32® will try to load "/opt/t32/t32screenqt4.so" (regardless of where the executable is located).
  • If the above fails, TRACE32® will abort operation.

Example for Windows:
SET T32SCREENSO=C:\my_programs\t32dll\t32screenwin.dll With this setting, TRACE32® will try to load the DLL "C:\my_programs\t32dll\t32screenwin.dll", regardless of where the executable is located.

 

Troubleshooting


If TRACE32® is not able to load a DLL/SO file it displays an error message, which clearly shows which DLL/SO file(s) it tried to load.

For UNIX like operating systems, TRACE32® prints the information on standard error.
To see this error message you have to start TRACE32® from a shell command line.

If TRACE32® started successfully, you might use the command
VERSION.SOFTWARE in the TRACE32® command line to display a window, which shows, which DLL/SO file was loaded.

 

Linux specific hints


Missing system shared libraries

For Linux, TRACE32® uses the available system shared libraries to draw its GUI.
If you want to use a specific GUI, you have to make sure that the GUI specific system shared libraries are installed.
To find out which system shared libraries might be missing, you might use the ldd command line tool.

Example: t32screenqt5.so cannot be loaded. From a shell command line use:
ldd t32screenqt5.so to get some diagnostic output what might be missing.

Example: On a system where the QT4 system shared libraries are not installed, you might get the following output, when you use
ldd t32screenqt4.so
linux-vdso.so.1 (0x00007ffe52d2e000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f47cd768000) libQtGui.so.4 => not found ...

Find out which package you need

Once you know which library is missing, you need to find out what the package name of the package is, which contains the missing library.
For the different GUI frameworks, search for the following libraries:

  • MOTIF: libXm.so.4
  • Qt4: libQtGui.so.4
  • Qt5: libQt5Widgets.so.5

Different Linux distributions offer different ways how to find out, which package contains a library.
Here is a list of command line calls how to find out which package you need:

  • Distributions which use     apt
    (Debian, Ubuntu, Linux Mint, ...)
    First off all install the apt-file utility. ( sudo apt install apt-file ). Then:
    apt-file find <library>
  • Distributions which use     zypper
    (SUSE Linux,...)
    zypper search -f <library>
  • Distributions which use     yum
    (Old Red Hat, Fedora, ...)
    yum whatprovides '*/<library>'
  • Distributions which use     dnf
    (Recent Red Hat, Fedora, ...)
    dnf provides <library>
  • Distributions which use     pacman
    (Arch Linux, Manjaro Linux, ...)
    pacman -Fs <library>
  • Gentoo
    For Gentoo you have to search for the package online.

MOTIF related problems

  • Under Linux there were two executables for each architecture: "t32m*" and "t32m*-qt"
    With the new shared library mechanism, "t32m*-qt" is replaced by a small bash script.
    If you install an update, by only copying "t32m*-qt" (without copying "t32m*"), then you will install the new small "t32m*-qt" script. This script calls "t32m*", so you will now start the old version of the software and furthermore this software will probably use the MOTIF GUI.
    Hint: To avoid these problems, make sure you additionally copy "t32m*" (without "-qt") too.
  • Under Linux to enforce usage of the MOTIF GUI you did call "t32m*". With the new shared library mechanism, calling "t32m*" will prefer QT if you have a Linux distribution where this GUI framework is availble.
    Hint: If you want to enforce usage of MOTIF, you have to set
    export T32SCREENSO=t32screencde.so If you want this to be the default, then add the above line to the file "~/.bashrc" (in your home directory).

Warning of a deprecated TRACE32 executable

  • Under Linux there were two executables for each architecture: "t32m*" and "t32m*-qt"
    With the new shared library mechanism, "t32m*-qt" is replaced by a small notify bash script.
    If you get a warning after a TRACE32 software update like Warning: starting /home/testuser/t32/bin/pc_linux64/t32marm-qt is deprecated, see https://www.lauterbach.com/3737 please replace the executable name "t32m*-qt" by the corresponding name "t32m*" (without "-qt") in your start script or command line.




Copyright © 2019 Lauterbach GmbH, Altlaufstr.40, 85635 Höhenkirchen-Siegertsbrunn, Germany   Impressum     Privacy Policy
The information presented is intended to give overview information only.
Changes and technical enhancements or modifications can be made without notice. Report Errors
Last generated/modified: 27-Dec-2019