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 :
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.
Then type that to analyze the current system and configure the package:
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
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:
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:
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.
or
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