Did you know ... | Search Documentation: |
Prerequisites for Debian based systems (Ubuntu, Mint, ...) |
The universal way to get dependencies for a package is below. The disadvantage is that the distribution list of dependencies can be outdated.
apt-get build-dep swi-prolog
After building you may wish to run ?- check_installation.
in swipl
to check that all components have been built properly.
Use the following commands to obtain all dependencies for a full build
from source. Note that there are no known version dependencies on any of
these packages. If your (debian-based) distribution is lacking any of
these package use apt search <name>
to find an alternative, where
<name> is e.g., jdk
(i.e., remove version and details). Some remarks:
ninja-build
may be dropped, building using make
. Using make
is fine for a one-time build, but ninja
is advised for developers
or people that regularly update using git.iodbc
instead of unixodbc
for ODBC
connectivity.junit
(Junit 3).libarchive-dev
is needed for library(archive),
which is needed by pack_install/1.libossp-uuid-dev
is needed for library(uuid). Without
UUID support falls back to a slower and less versatile pure Prolog
implementation.libdb-dev
is needed for
library(bdb), the BerkeleyDB embedded database interface.libreadline-dev
and libedit-dev
both provide
command line editing for interactive usage. None is strictly
needed and one of them suffices. libedit-dev
is the preferred
command line editor.libgoogle-perftools-dev
provides
tcmalloc, which can reduce
memory usage a lot on some heavily multithreaded applications.libpcre2-dev
is required for library(pcre). SWI-Prolog versions before
8.5.9 require libpcre3-dev
(which is older than libpcre2-dev
...)cmake
must be at least version 3.5 See
CMAKE.mdsudo apt-get install \ build-essential cmake ninja-build pkg-config \ ncurses-dev libreadline-dev libedit-dev \ libgoogle-perftools-dev \ libgmp-dev \ libssl-dev \ unixodbc-dev \ zlib1g-dev libarchive-dev \ libossp-uuid-dev \ libxext-dev libice-dev libjpeg-dev libxrandr-dev libxinerama-dev libxft-dev \ libxpm-dev libxt-dev \ libdb-dev \ libpcre2-dev \ libyaml-dev \ python3 libpython3-dev \ default-jdk junit4
Raspbian is fully supported and can be used to build SWI-Prolog including all packages without issues. If you want to reduce resources, the following packages are optional:
The swipl-win
executable provides a Qt based console for SWI-Prolog by
Carlo Capelli. This console is used to provide the MacOS app, but can
also be used on Linux. To include it, install the Qt development
environment:
apt-get install qt6-base-dev
Unfortunately the packaging of Qt changes frequently. Try to find
base Qt packages, preferably from Qt6 (Qt5 still works) until cmake
stops complaining about missing Qt dependencies. Note that you do not
have to clean the build after adding a Qt package. Below are a few
alternatives that used to work on older Ubuntu versions.
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt install qt5-default
The HTML documentation is built as part of the default build procedure and only depends on Prolog itself and some of its packages. The dependencies below are needed to build the PDF documentation. Configuring the build to include the PDF docs requires
cmake -DBUILD_PDF_DOCUMENTATION=ON ...
sudo apt-get install \ texlive-latex-extra \ texlive-font-utils \ texlive-fonts-extra \ texlive-fonts-extra-doc \ texlive-fonts-recommended \ texlive-fonts-recommended-doc
Now that after you have installed dependencies, return to Build SWI-Prolog from source to complete installation.