Compilation & Installation from source code

This document explains how to build and install Gambas from the source code.

While this is not the easiest way to install Gambas on your system (as most distributions provide Gambas packages), it is needed if you want the very last Gambas version, if you want to work with the development version or if you need to do some debugging.

Requirements

Development Packages

In order to compile Gambas, you must install the following dependencies and their "development" counterparts.

The actual name of the packages containing these dependencies may vary according to your distribution, so please refer to the distribution specific pages below for more details.

Component Requirements (libraries or pkg-config module)
Compilation gcc g++ automake autoconf libtool >= 2.0
Interpreter libffi
gb.compress.bzlib2 libbz2.so
gb.compress.zlib libz.so
gb.compress.zstd libzstd.so >= 1.3.3
gb.cairo cairo >= 1.6.0 cairo-ft >= 1.6.0
gb.crypt libcrypt.so
gb.db.mysql libmysqlclient.so, libz.so
gb.db.odbc libodbc.so
gb.db.postgresql libpq.so
gb.db.sqlite2 libsqlite.so
gb.db.sqlite3 libsqlite3.so
gb.dbus dbus-1
gb.desktop.x11 libXtst.so x11
gb.desktop.gnome gnome-keyring-1
gb.gmp libgmp.so
gb.gsl libgsl.so libgslcblas.so
gb.gtk gtk+-2.0 >= 2.16 cairo >= 1.6.0 cairo-ft >= 1.6.0 gtk+-unix-print-2.0 >= 2.10 librsvg-2.0 >= 2.14.3
gb.gtk.opengl gtkglext-1.0
gb.gtk3 gtk+-3.0 >= 3.4 cairo >= 1.6.0 cairo-ft >= 1.6.0 gtk+-unix-print-2.0 >= 3.4 librsvg-2.0 >= 2.14.3
gb.gtk3.wayland gtk+-3.0 >= 3.4 gdk-wayland-3.0
gb.gtk3.webview gtk+-3.0 >= 3.4 webkit2gtk-4.0 >= 2.20
gb.gtk3.x11 gtk+-3.0 >= 3.4 gdk-x11-3.0
gb.image.io gdk-pixbuf
gb.image.imlib imlib
gb.libxml libxml-2.0
gb.media gstreamer-0.10 >= 0.10.31 gstreamer-interfaces-0.10 >= 0.10.31 for Gambas <= 3.4

gstreamer-1.0 gstreamer-video-1.0 for Gambas >= 3.5
gb.mime gmime-2.6 or gmime-3.0
gb.ncurses ncurses.so panel.so
gb.net.curl libcurl >= 7.13
gb.openal openal >= 1.13 alure
gb.opengl gb.opengl.glsl libGL.so libGLEW.so
gb.opengl.glu libGLU.so
gb.openssl openssl
gb.pcre libpcre.so
gb.pdf poppler >= 0.5
gb.poppler poppler >= 0.20 poppler-cpp poppler-glib
gb.qt4 QtCore >= 4.5.0 QtGui QtSvg x11
gb.qt4.ext QtCore >= 4.5.0 QtGui Qt3Support x11
gb.qt4.opengl QtCore >= 4.5.0 QtGui QtOpenGL x11 gl
gb.qt4.webkit QtCore >= 4.5.0 QtGui QtNetwork QtDBus QtXml QtWebKit >= 4.5.0
gb.qt4.webview QtCore >= 4.5.0 QtGui QtNetwork QtDBus QtXml QtWebKit >= 4.5.0
gb.qt5 Qt5Core >= 5.3.0 Qt5Gui Qt5Widgets Qt5Svg Qt5PrintSupport
gb.qt5.ext Qt5Core >= 5.3.0 Qt5Gui Qt5Widgets x11
gb.qt5.opengl Qt5Core >= 5.3.0 Qt5Gui Qt5Widgets Qt5OpenGL gl x11

Note: Qt5OpenGL is not needed if your Qt version is >= 5.4.0
gb.qt5.wayland Qt5Core >= 5.3.0 Qt5Gui Qt5Widgets
gb.qt5.webkit Qt5Core >= 5.3.0 Qt5Gui Qt5Widgets Qt5Network Qt5Xml Qt5WebKit Qt5WebKitWidgets Qt5PrintSupport
gb.qt5.webview Qt5Core >= 5.5.0 Qt5WebEngineWidgets
gb.qt5.x11 Qt5Core >= 5.3.0 Qt5Gui Qt5Widgets Qt5X11Extras x11-xcb
gb.sdl libSDL.so libSDL_ttf.so libGL.so libGLEW.so
gb.sdl.sound libSDL.so libSDL_mixer.so
gb.sdl2 libSDL2-2.0.so libSDL2_image-2.0 libSDL2_ttf-2.0 libGL.so libGLEW.so
gb.sdl2.audio libSDL2-2.0.so libSDL2_mixer-2.0.so
gb.v4l libjpeg.so libpng.so (Video4Linux >= 2.0)
gb.xml.xslt libxml-2.0 libxslt

Other requirements

You must have the right to write to the /tmp directory, otherwise Gambas will not work.

The following versions of GNU tools are also needed for building:
  • automake 1.11.1

  • autoconf 2.68

  • libtool 2.4

Compiling with older versions may or may not work!

Downloading the sources

There are two ways to get the Gambas sources : downloading the release tar archive, or fetching it from the git repository.

Downloading the release tar archive

The tar archive for the latest release can be directly downloaded from the website, in the Download section.

Downloading from git

Downloading the sources from git is needed if you want to use the development version. You will also need to install git in order to use the following commands. For more info about using Gitlab Gambas repository see in the Git development guide for Gambas

Enter the following command to retrieve the latest revision of the development version in a new gambas directory :

$ git clone --depth=1 https://gitlab.com/gambas/gambas.git

The --depth=1 argument makes git only download the latest version. If you omit it, it will download the entire history of changes made in the source code, which is useless if you do not plan to contribute to Gambas.

Therefore, it is better for most users to leave this option on, as it will reduce the size of the download, as well as the disk usage.

Once complete, a gambas directory will be created containing the source code.

In order to check for and download updates, enter the gambas directory, and use the following command :

$ git pull

The sources will then be updated, and you will have to restart the compilation and installation procedure in order to apply the changes to your system.

Package dependency lists and configure commands for the latest version from GitLab

These instructions directly come from the GitLab Continuous Integration configuration file. They work, unless a failure that you can check directly in the status of the GitLab pipelines.

Arch Linux

pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre

pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver

./reconf-all

./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl

Debian Bullseye (11)

apt-get update && apt-get install -y build-essential g++ automake autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev git libssl-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-sqlite2 --disable-qt4 --disable-qt6

Debian Bookworm (12)

apt-get update && apt-get install -y build-essential g++ automake autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev git libssl-dev qt6-base-dev qt6-webengine-dev qt6-svg-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-sqlite2 --disable-qt4

Debian Trixie (13)

apt-get update && apt-get install -y build-essential g++ automake autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libpcre2-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf-xlib-2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.1-dev git libssl-dev qt6-base-dev qt6-webengine-dev qt6-svg-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-sqlite2 --disable-qt4 --disable-gtkopengl

Debian Sid (unstable)

apt-get update && apt-get install -y build-essential g++ automake autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf-xlib-2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses-dev libgmime-3.0-dev libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.1-dev git libssl-dev qt6-base-dev qt6-webengine-dev qt6-svg-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-qt4 --disable-sqlite2

Ubuntu Noble (24.04)

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.1-dev git qt6-svg-dev qt6-base-dev qt6-webengine-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-qt4 --disable-sqlite2

Ubuntu Lunar (23.04)

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev libfribidi-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-qt4 --disable-qt6

Ubuntu Jammy (22.04)

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev libfribidi-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-qt4 --disable-qt6

Ubuntu Focal (20.04)

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev libfribidi-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-qt4 --disable-qt6

Ubuntu Bionic (18.04)

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential git g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev libfribidi-dev libmongoc-dev

./reconf-all

./configure -C --disable-keyring --disable-qt6

Ubuntu Xenial (16.04)

apt-get update && apt-get install -y build-essential g++ git automake autoconf libtool libbz2-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgnome-keyring-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev libwebkit2gtk-3.0-dev libfribidi-dev

./reconf-all

./configure -C --disable-gtk3webview --disable-qt5webview --disable-qt5wayland --disable-zstd --disable-qt6 --disable-mongodb

Ubuntu Trusty (14.04)

apt-get update && apt-get install -y build-essential git g++ automake autoconf libtool libbz2-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgnome-keyring-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl0-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libglu1-mesa-dev libglu1-mesa-dev libglew1.10 libglu1-mesa libgles2-mesa-dev libwebkit2gtk-3.0-dev libfribidi-dev

./reconf-all

./configure -C --disable-qt5 --disable-gtk3webview --disable-gtk3opengl --disable-zstd --disable-qt6 --disable-mongodb

Note: For the Ubuntu/LinuxMint PPA install method of the latest stable build
or daily build that does not need compiling See the Ubuntu page.

Alpine

apk add --no-progress -q autoconf automake libtool curl-dev dbus-dev g++ gdk-pixbuf-dev git gmp-dev glew-dev glib-dev gmime-dev gsl-dev gst-plugins-base-dev gstreamer-dev gtk+2.0-dev gtk+3.0-dev imlib2-dev gettext-dev libffi-dev mesa-dev mariadb-dev librsvg-dev libsm-dev libxcursor-dev libxml2-dev libxslt-dev libxtst-dev make ncurses-dev pcre-dev pkgconf poppler-dev postgresql-dev qt5-qtsvg-dev qt5-qtx11extras-dev qt5-qtwebengine-dev sdl2-dev sdl2_image-dev sdl2_mixer-dev sdl2_ttf-dev sqlite-dev unixodbc-dev xdg-utils zlib-dev webkit2gtk-4.1-dev qt6-qtsvg-dev qt6-qtwebengine-dev mongo-c-driver-dev

./reconf-all

./configure -C --disable-openal --disable-qt4 --disable-sdl --disable-sdlsound --disable-sqlite2 --disable-v4l --disable-gtkopengl --disable-zstd  --disable-qt5webkit --disable-pdf --disable-keyring

Fedora Latest

dnf install -y libtool libtool-ltdl-devel gcc make autoconf dumb-devel gmime-devel gmime30-devel libffi-devel mariadb-devel postgresql-devel unixODBC-devel sqlite2-devel libsqlite3x-devel libxslt-devel libv4l-devel glew-devel poppler-devel poppler-glib-devel poppler-cpp-devel qt-devel qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtwebengine-devel qt5-qtx11extras-devel qt5-qtsvg-devel SDL_ttf-devel SDL_mixer-devel SDL-devel SDL2_ttf-devel SDL2_mixer-devel SDL2_image-devel SDL2-devel cairo-devel gtk2-devel gtk3-devel imlib2-devel librsvg2-devel qt-webkit-devel qt5-qtwebkit qt5-qtwebkit-devel openal-soft-devel libjpeg-turbo-devel gtkglext-devel gmp-devel libxml2-devel libXtst-devel gsl-devel pcre-devel dbus-devel libcurl-devel alure-devel gstreamermm-devel libgnome-keyring-devel bzip2-devel libzstd-devel webkit2gtk3-devel ncurses-devel qt6-qtbase-devel qt6-qtwebengine-devel qt6-qtsvg-devel mongo-c-driver-devel

./reconf-all

./configure -C --disable-pdf

OpenSuse Leap/Tumbleweed

zypper update -y && zypper install -y libtool gawk gcc glew-devel gmime-devel gtk2-devel gtk3-devel libqt5-qtx11extras-devel libqt5-qtwebengine-devel libQt5Xml-devel libQt5Sql-devel libqt5-qtsvg-devel libQt5Gui-devel libQt5Core-devel libQt5Sql5-postgresql libQt5Sql5-unixODBC libQt5Sql5-mysql libQt5Sql5-sqlite webkit2gtk3-devel libICE-devel libSM-devel unixODBC-devel libzip-devel libzstd-devel libmariadb-devel gsl-devel libopenssl-devel alure-devel postgresql-devel libcurl-devel libSDL_ttf-devel libSDL_mixer-devel libSDL-devel libSDL2_ttf-devel libSDL2_mixer-devel libSDL2_image-devel libSDL2-devel libxslt-devel libv4l-devel librsvg-devel gtkglext-devel libgnome-keyring-devel libjpeg62-devel libpoppler-devel libpoppler-glib-devel imlib2-devel gmp-devel gstreamermm-devel qt6-webenginewidgets-devel qt6-svg-devel qt6-gui-devel qt6-core-devel qt6-openglwidgets-devel

./reconf-all

./configure -C --disable-qt4 --disable-sqlite2 --disable-qt5webkit --disable-pdf --disable-mongodb

How to compile and install Gambas 3

Source package configuration

The compilation procedure is the same whether you downloaded the sources from the tarball or from git.

When you are sure that everything is downloaded, type the following magic sentences in a shell.

'$' represents your shell prompt, and '...' are the messages printed during the configuration and compilation.
'#' represents command needs to be run as superuser.

First, enter the source top-level directory.

$ cd /path/to/source/directory/

Then, type that to create the configuration scripts.

$ ./reconf-all

Then type that to analyze the current system and configure the package:

$ ./configure -C
...

If a library or a development package is missing, then you will be warned that some components are disabled.

Note. to have ./configure only output error messages and not all the checking info then use the -q (quiet) flag
$ ./configure -C -q
but do not use -q if sending installation output to the gambas team for help.

There are more configure specific explanations in the INSTALL file located in the top-level source directory. I invite you to read them.

Compilation

If everything is configured without error, then run this command to compile the program:

$ make -j $(nproc)
...

the arg -j sets how many "jobs" to do at once and your computer can utilize all CPU cores. The statement $(nproc) returns your number of cores.

Installation

If everything compiles without error, then enter this command to install everything:

You must be root to install Gambas on your system.

# su -c "make install"
Password: <Type the root password here>
...

or

# sudo make install
Password: <Type your password here>
...

Troubleshooting

If you did several successive compilations, after having updated the source from the repository for example, and if something fails during all this process, you can try to "reconfigure" the configuration scripts by typing the following command:

$ ./reconf-all

Then you can run ./configure -C -q again

If it does not work, I need to know what happened exactly. To do so, type the following command :

# ( ./configure -C; make; make install ) > output.txt 2>&1

And send me the file "output.txt" by mail, with every other detail about your computer and your distribution you find useful.

Another possibility if you have an existing source folder that did compile but does not after an update, even after running ./reconf-all, is that there are some files/libs that are not being updated/recompiled.
You can try running "make clean" or "make distclean" to clean your source folder of all created files so all files are recompiled from fresh.
$ make clean
or
$ make distclean

The Development Environment

The Gambas IDE is made with Gambas. In order to compile and use it, you need to compile the following components:

User made tools to help with the process

Tools to help compile/install the latest Gambas3

Other instructions / installation options for specific distributions and older versions

A
Arch and Manjaro Linux Arm64
Arch Linux
C
Cygwin
D
Debian
F
Fedora
FreeBSD
G
GhostBSD
L
Linux Mint
M
Mageia
O
OpenSUSE
P
Pardus
R
Raspbian
T
Tools to help compile/install the latest Gambas3
U
Ubuntu