Harbour on Linux - step by step

746 views
Skip to first unread message

Hazael

unread,
Jun 26, 2019, 11:04:41 PM6/26/19
to Harbour Users
Hi, I did some tests with Linux Mint 19.1 Tessa
I was able to install Harbour and build a test program "Hello World" but I think my setup is not ideal. I installed inside the HOME folder, but looks messy...

I would like to have a clear direction of how to install Harbour on Linux (in details).

Some questions:

Where should I copy the Harbour sources (folder).
Where should I build Harbour binaries (folder)
Where should I install my project files (source code - folder)
Where should I install my binary programs (the programs I make and compile with Harbour).
Where should I install icons, ini files, database (dbf, mysql, firebird, sqlite).

Seems that Linux is pretty flexible about the questions above but I would like to know the recommended places and why.

I think my questions are very basic for a more experienced user but I want to understand how it works with Linux and have the same confidence I have with Windows.

Thanks for any help


Alain Aupeix

unread,
Jun 27, 2019, 2:27:59 AM6/27/19
to harbou...@googlegroups.com
Le 27/06/2019 à 05:04, Hazael a écrit :
> Hi, I did some tests with Linux Mint 19.1 Tessa
> I was able to install Harbour and build a test program "Hello World"
> but I think my setup is not ideal. I installed inside the HOME folder,
> but looks messy...
>
> I would like to have a clear direction of how to install Harbour on
> Linux (in details).

When you build harbour, you run :

make

ok ?

To install, just run :

sudo -E make install

and it will the the job. No need to copy some files ...

A+
--
------------------------------------------------------------------------
Alain Aupeix
http://jujuland.pagesperso-orange.fr/
http://pissobi-lacassagne.pagesperso-orange.fr/
------------------------------------------------------------------------
U.buntu 12.04 & Xu.buntu 16.04 | G.ramps 3.4.9-1 | H.arbour 3.2.0dev
(2019-04-11 15:33) | Hw.Gui (2786)
------------------------------------------------------------------------

Hazael

unread,
Jun 27, 2019, 12:34:31 PM6/27/19
to Harbour Users
Hi Alain,

Thanks for answering.
My question is even more basic than that.
Lets start from scratch, from zero.
Lets say I just installed Linux in my computer (Ubuntu or Mint as example).

So what is the first thing to do?

Copy Harbour sources? To where?
Install the preharbour requisites?
Execute sudo -E make install? But where?

Do you have some export variables that you setup in Linux? Which ones?
How do you configure your Linux machine to build and execute Harbour programs?


Alain Aupeix

unread,
Jun 27, 2019, 1:53:43 PM6/27/19
to harbou...@googlegroups.com
Le 27/06/2019 à 18:34, Hazael a écrit :
> Hi Alain,
>
> Thanks for answering.
> My question is even more basic than that.
> Lets start from scratch, from zero.
> Lets say I just installed Linux in my computer (Ubuntu or Mint as
> example).
ok
> So what is the first thing to do?
>
> Copy Harbour sources? To where?
no
> Install the preharbour requisites?
Yes

Here is what to do :

1) Install prerequites (see pre-hb joined)
2) Copy the source (open a terminal (see build-hb joined)
3) run ...
pre-hb
build-hb

Hazael

unread,
Jun 27, 2019, 6:09:45 PM6/27/19
to Harbour Users
This is what I got from pre-hb>

Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
gdebi est déjà la version la plus récente (0.9.5.7xmint8).
gdebi-core est déjà la version la plus récente (0.9.5.7xmint8).
autoconf est déjà la version la plus récente (2.69-11).
autoconf passé en « installé manuellement ».
automake est déjà la version la plus récente (1:1.15.1-3ubuntu2).
automake passé en « installé manuellement ».
git est déjà la version la plus récente (1:2.17.1-1ubuntu0.4).
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  linux-headers-4.15.0-50 linux-headers-4.15.0-50-generic
  linux-image-4.15.0-50-generic linux-modules-4.15.0-50-generic
  linux-modules-extra-4.15.0-50-generic
Veuillez utiliser « sudo apt autoremove » pour les supprimer.
Les paquets supplémentaires suivants seront installés : 
  g++ g++-7 libapr1 libaprutil1 libserf-1-1 libstdc++-7-dev libsvn-perl
  libsvn1 libterm-readkey-perl libyaml-perl
Paquets suggérés :
  g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg git-doc subversion
  libstdc++-7-doc libyaml-shell-perl
Les NOUVEAUX paquets suivants seront installés :
  build-essential g++ g++-7 git-svn intltool libapr1 libaprutil1 libserf-1-1
  libstdc++-7-dev libsvn-perl libsvn1 libterm-readkey-perl libyaml-perl
0 mis à jour, 13 nouvellement installés, 0 à enlever et 3 non mis à jour.
1 partiellement installés ou enlevés.
Il est nécessaire de prendre 11,5 Mo dans les archives.
Après cette opération, 52,3 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] Réception de :1 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic-updates/main amd64 libstdc++-7-dev amd64 7.4.0-1ubuntu1~18.04.1 [1 468 kB]
Réception de :2 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic-updates/main amd64 g++-7 amd64 7.4.0-1ubuntu1~18.04.1 [7 574 kB]
Réception de :3 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic-updates/main amd64 g++ amd64 4:7.4.0-1ubuntu2.3 [1 568 B]
Réception de :4 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/main amd64 build-essential amd64 12.4ubuntu1 [4 758 B]
Réception de :5 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/main amd64 libapr1 amd64 1.6.3-2 [90,9 kB]
Réception de :6 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/main amd64 libaprutil1 amd64 1.6.1-2 [84,4 kB]
Réception de :7 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/universe amd64 libserf-1-1 amd64 1.3.9-6 [44,4 kB]
Réception de :8 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/universe amd64 libsvn1 amd64 1.9.7-4ubuntu1 [1 183 kB]
Réception de :9 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/universe amd64 libsvn-perl amd64 1.9.7-4ubuntu1 [855 kB]
Réception de :10 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/main amd64 libyaml-perl all 1.24-1 [56,4 kB]
Réception de :11 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/universe amd64 libterm-readkey-perl amd64 2.37-1build1 [24,4 kB]
Réception de :12 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic-updates/universe amd64 git-svn all 1:2.17.1-1ubuntu0.4 [80,9 kB]
Réception de :13 http://fireball-public.phys.wvu.edu/mirror/ubuntu bionic/universe amd64 intltool all 0.51.0-5ubuntu1 [44,6 kB]
11,5 Mo réceptionnés en 3min 0s (64,0 ko/s)
Sélection du paquet libstdc++-7-dev:amd64 précédemment désélectionné.
(Lecture de la base de données... 
(Lecture de la base de données... 5%
(Lecture de la base de données... 10%
(Lecture de la base de données... 15%
(Lecture de la base de données... 20%
(Lecture de la base de données... 25%
(Lecture de la base de données... 30%
(Lecture de la base de données... 35%
(Lecture de la base de données... 40%
(Lecture de la base de données... 45%
(Lecture de la base de données... 50%
(Lecture de la base de données... 55%
(Lecture de la base de données... 60%
(Lecture de la base de données... 65%
(Lecture de la base de données... 70%
(Lecture de la base de données... 75%
(Lecture de la base de données... 80%
(Lecture de la base de données... 85%
(Lecture de la base de données... 90%
(Lecture de la base de données... 95%
(Lecture de la base de données... 100%
(Lecture de la base de données... 444528 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../00-libstdc++-7-dev_7.4.0-1ubuntu1~18.04.1_amd64.deb ...
Dépaquetage de libstdc++-7-dev:amd64 (7.4.0-1ubuntu1~18.04.1) ...
Sélection du paquet g++-7 précédemment désélectionné.
Préparation du dépaquetage de .../01-g++-7_7.4.0-1ubuntu1~18.04.1_amd64.deb ...
Dépaquetage de g++-7 (7.4.0-1ubuntu1~18.04.1) ...
Sélection du paquet g++ précédemment désélectionné.
Préparation du dépaquetage de .../02-g++_4%3a7.4.0-1ubuntu2.3_amd64.deb ...
Dépaquetage de g++ (4:7.4.0-1ubuntu2.3) ...
Sélection du paquet build-essential précédemment désélectionné.
Préparation du dépaquetage de .../03-build-essential_12.4ubuntu1_amd64.deb ...
Dépaquetage de build-essential (12.4ubuntu1) ...
Sélection du paquet libapr1:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../04-libapr1_1.6.3-2_amd64.deb ...
Dépaquetage de libapr1:amd64 (1.6.3-2) ...
Sélection du paquet libaprutil1:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../05-libaprutil1_1.6.1-2_amd64.deb ...
Dépaquetage de libaprutil1:amd64 (1.6.1-2) ...
Sélection du paquet libserf-1-1:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../06-libserf-1-1_1.3.9-6_amd64.deb ...
Dépaquetage de libserf-1-1:amd64 (1.3.9-6) ...
Sélection du paquet libsvn1:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../07-libsvn1_1.9.7-4ubuntu1_amd64.deb ...
Dépaquetage de libsvn1:amd64 (1.9.7-4ubuntu1) ...
Sélection du paquet libsvn-perl précédemment désélectionné.
Préparation du dépaquetage de .../08-libsvn-perl_1.9.7-4ubuntu1_amd64.deb ...
Dépaquetage de libsvn-perl (1.9.7-4ubuntu1) ...
Sélection du paquet libyaml-perl précédemment désélectionné.
Préparation du dépaquetage de .../09-libyaml-perl_1.24-1_all.deb ...
Dépaquetage de libyaml-perl (1.24-1) ...
Sélection du paquet libterm-readkey-perl précédemment désélectionné.
Préparation du dépaquetage de .../10-libterm-readkey-perl_2.37-1build1_amd64.deb ...
Dépaquetage de libterm-readkey-perl (2.37-1build1) ...
Sélection du paquet git-svn précédemment désélectionné.
Préparation du dépaquetage de .../11-git-svn_1%3a2.17.1-1ubuntu0.4_all.deb ...
Dépaquetage de git-svn (1:2.17.1-1ubuntu0.4) ...
Sélection du paquet intltool précédemment désélectionné.
Préparation du dépaquetage de .../12-intltool_0.51.0-5ubuntu1_all.deb ...
Dépaquetage de intltool (0.51.0-5ubuntu1) ...
Paramétrage de libapr1:amd64 (1.6.3-2) ...
Paramétrage de intltool (0.51.0-5ubuntu1) ...
Paramétrage de libyaml-perl (1.24-1) ...
Paramétrage de libterm-readkey-perl (2.37-1build1) ...
Paramétrage de libstdc++-7-dev:amd64 (7.4.0-1ubuntu1~18.04.1) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.27-3ubuntu1) ...
Paramétrage de libaprutil1:amd64 (1.6.1-2) ...
Traitement des actions différées (« triggers ») pour man-db (2.8.3-2ubuntu0.1) ...
Paramétrage de warsaw (1.13.0-25) ...
Synchronizing state of warsaw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable warsaw
Job for warsaw.service failed because the control process exited with error code.
See "systemctl status warsaw.service" and "journalctl -xe" for details.
dpkg: erreur de traitement du paquet warsaw (--configure) :
 installed warsaw package post-installation script subprocess returned error exit status 1
Paramétrage de g++-7 (7.4.0-1ubuntu1~18.04.1) ...
Paramétrage de libserf-1-1:amd64 (1.3.9-6) ...
Paramétrage de g++ (4:7.4.0-1ubuntu2.3) ...
update-alternatives: utilisation de « /usr/bin/g++ » pour fournir « /usr/bin/c++ » (c++) en mode automatique
Paramétrage de libsvn1:amd64 (1.9.7-4ubuntu1) ...
Paramétrage de build-essential (12.4ubuntu1) ...
Paramétrage de libsvn-perl (1.9.7-4ubuntu1) ...
Paramétrage de git-svn (1:2.17.1-1ubuntu0.4) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.27-3ubuntu1) ...
Des erreurs ont été rencontrées pendant l'exécution :
 warsaw
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
liballegro4-dev est déjà la version la plus récente (2:4.4.2-10).
libcairo2-dev est déjà la version la plus récente (1.15.10-2ubuntu0.1).
libcups2-dev est déjà la version la plus récente (2.2.7-1ubuntu2.6).
libcurl4-openssl-dev est déjà la version la plus récente (7.58.0-2ubuntu3.7).
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  linux-headers-4.15.0-50 linux-headers-4.15.0-50-generic
  linux-image-4.15.0-50-generic linux-modules-4.15.0-50-generic
  linux-modules-extra-4.15.0-50-generic
Veuillez utiliser « sudo apt autoremove » pour les supprimer.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 3 non mis à jour.
1 partiellement installés ou enlevés.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] Paramétrage de warsaw (1.13.0-25) ...
Synchronizing state of warsaw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable warsaw
Job for warsaw.service failed because the control process exited with error code.
See "systemctl status warsaw.service" and "journalctl -xe" for details.
dpkg: erreur de traitement du paquet warsaw (--configure) :
 installed warsaw package post-installation script subprocess returned error exit status 1
Des erreurs ont été rencontrées pendant l'exécution :
 warsaw
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
Aucune version du paquet firebird2.1-dev n'est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
ou qu'il n'est disponible que sur une autre source
Cependant les paquets suivants le remplacent :
  firebird-dev:i386 firebird-dev

Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état… 

Alain Aupeix

unread,
Jun 28, 2019, 2:35:23 AM6/28/19
to harbou...@googlegroups.com
Le 28/06/2019 à 00:09, Hazael a écrit :
>
> This is what I got from pre-hb>
>
>
> ...
> Paramétrage de warsaw (1.13.0-25) ...
> Synchronizing state of warsaw.service with SysV service script with
> /lib/systemd/systemd-sysv-install.
> Executing: /lib/systemd/systemd-sysv-install enable warsaw
> Job for warsaw.service failed because the control process exited with
> error code.
> See "systemctl status warsaw.service" and "journalctl -xe" for details.
> dpkg: erreur de traitement du paquet warsaw (--configure) :
> installed warsaw package post-installation script subprocess returned
> error exit status 1

I don't know the service, but I think it's not essential for harbour.

> Paramétrage de warsaw (1.13.0-25) ...
> Synchronizing state of warsaw.service with SysV service script with
> /lib/systemd/systemd-sysv-install.
> Executing: /lib/systemd/systemd-sysv-install enable warsaw
> Job for warsaw.service failed because the control process exited with
> error code.
> See "systemctl status warsaw.service" and "journalctl -xe" for details.
> dpkg: erreur de traitement du paquet warsaw (--configure) :
> installed warsaw package post-installation script subprocess returned
> error exit status 1
> Des erreurs ont été rencontrées pendant l'exécution :
> warsaw

Same answer

> Aucune version du paquet firebird2.1-dev n'est disponible, mais il
> existe dans la base
> de données. Cela signifie en général que le paquet est manquant, qu'il
> est devenu obsolète
> ou qu'il n'est disponible que sur une autre source
> Cependant les paquets suivants le remplacent :
> firebird-dev:i386 firebird-dev

I suppose you have installerd them

sudo apt install firebird-dev:i386 firebird-dev

So it seems you can now install with the second script.

A+

Alain Aupeix

unread,
Jul 1, 2019, 8:25:19 AM7/1/19
to harbou...@googlegroups.com
Hi Qatan,

Is-it ok now ?

A+

Hazael

unread,
Jul 1, 2019, 4:50:06 PM7/1/19
to Harbour Users
I think I found the answer here:


and here:

https://www.howtogeek.com/117435/htg-explains-the-linux-directory-structure-explained/

According to Harbour Docs, section "Build Options", sub-section "General":

General

  • HB_INSTALL_PREFIX

    Target root directory to install Harbour files. On *nix systems the default is set to /usr/local/ or $(PREFIX) if specified, and /usr/local/harbour-<arch>-<comp> for cross-builds. It's always set to ./pkg/<arch>/<comp> when HB_BUILD_PKG is set to yes. On non-*nix systems, you must set it to a valid directory when using install. Use absolute paths only. For a peace of mind, avoid using spaces and quotes in the name. You have to use path format native to your shell. F.e. to specify C:\dir on Windows, with Cygwin you should use /cygdrive/c/dir, with MSYS /c/dir.

Alain Aupeix

unread,
Jul 1, 2019, 5:46:04 PM7/1/19
to harbou...@googlegroups.com
Le 01/07/2019 à 22:50, Hazael a écrit :
> I think I found the answer here:
>
> https://github.com/harbour/core/#build-options

And the answer makes you success ?

For me, there is no need to specify $PREFIX, the install in
/usr/local/bin is correct and ok

Hazael

unread,
Jul 1, 2019, 11:28:19 PM7/1/19
to Harbour Users
Your answers were helpful to compare with what is written in Harbour Docs but both failed in my particular case because some Linux dev packages were updated and the bash file (and Harbour Docs) had older versions.
I was able to use the lastest packages using the apt-cache search keyword
Thanks for your help.

Ash

unread,
Jul 7, 2019, 9:07:15 AM7/7/19
to Harbour Users
Hello Hazael,

I was struggling with xRDP until I found this.


Hope this is helpful.

Regards.
Ash
Reply all
Reply to author
Forward
0 new messages