Compiling Jqt on Linux
You can compile your own version of Jqt on Linux, for example to:
- use a later version of Qt than the distribution.
- add new functions to Jqt
- restrict the set of Qt libraries required
Slim versions of Jqt are available from https://www.jsoftware.com/download/j902/qtide . These binaries remove the functionality for websockets, webengine, qml, multimedia, and opengl, and eliminate the need for the corresponding Qt libraries. By compiling your own Jqt, you can selectively remove one or more of the above functions by editing lib.pro in the Jqt source.
You will need the usual Linux compiler, e.g. in Debian/Ubuntu install package build-essential. Depending on your system, you may need additional libraries. For example under Debian/Ubuntu, you may need libgl1-mesa-dev (opengl) and libpulse-dev (audio). Check the compile for any errors and install additional libraries as required.
Install the Qt SDK
Get Qt using the Qt Online Installer for Linux. This requires a (free) Qt Account, and allows you to choose the Qt versions to be installed, as well as to update the installation later on.
Browse to Get Qt, select and download the the Open Source installer (or Commercial installer if necessary for your application). Run the Qt Online Installer, which presents a list of Qt versions. You can install anywhere on the machine, for example in /opt/qt.
The official J distribution is based on Qt 5.9.5. In theory you can use any version, but note that some Qt versions may require later versions of other non-Qt files than are available in your distribution, and the compilation will fail. If so, then try using an earlier version of Qt.
For example, on the author's machine running Linux Mint 20 (based on Ubuntu 20.04), the Qt version 5.12.9 worked properly.
The components below should be selected (if available), and any others as required:
Desktop gcc 64-bit Qt WebEngine
Download latest qtide source
Obtain the latest Jqt source from the Git repository, and install anywhere on your machine, e.g. $HOME/qtide. You can modify the contents of the file qtide/lib/lib.pro to selectively remove Jqt functions as needed (how to do so will become obvious from reading the file).
In the qtide source directory create and run a script makeqt.sh with contents like:
#!/bin/bash # run in qtide directory # set the correct Qt SDK directory: export QTDIR=/opt/qt/5.12.9/gcc_64 # uncomment this for a slim build: # export JQTSLIM=1 # other exports defined from QTDIR: export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH # set S to the qtide directory: S=$(dirname "$(realpath $0)") $S/clean.l64 cd $S/lib qmake && make cd $S/main qmake && make
The binaries will be in the folder qtide/bin/linux-x86_64/release, and should be copied to your ~bin directory.
After you make changes
If you change the source code, you need to re-make the binaries with your changes. You don't need to rerun qmake; just run make in each directory. You do need to ensure the environment variables shown above are defined correctly.
You should set the Qt plugin directory before calling J, e.g. use a script like:
#!/bin/bash export QT_PLUGIN_PATH=/opt/qt/5.12.9/gcc_64/plugins cd ~/j902 bin/jqt "$@"