Le développement dans le monde du libre GNU/Linux

 

I) Comment installer le système Debian pour l'expérimenter facilement.

Pour pouvoir utiliser le système d'exploitation Debian à partir de son PC Windows, sans avoir à acquérir de matériel supplémentaire ni modifier son système Windows, on peut installer une machine virtuelle avec une distribution Debian. On utilise pour cela le logiciel de virtualisation de systèmes d'exploitation,VirtualBox.

On utilise l'interface graphique du système d'exploitation Windows avec les outils Putty et WinSCP pour piloter le serveur virtuel, et on utilise le système d'exploitation Debian comme serveur virtuelle. Cela donne tout le confort nécessaire pour tester les capacités révolutionnaires de développement informatique que constitue la distribution Debian, un système d'exploitation universelle, déployable physiquement sur la plus part des architectures matérielles.

1) Installation des clients Putty et WinSCP

Télécharger l'exécutable Putty à partir du site http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Télécharger l'exécutable WinSCP à partir du site http://winscp.net/eng/download.php

Il convient de placer des exécutables dans un répertoire prévu pour contenir des exécutables. Dans une distribution Linux, un tel répertoire s'appellerait /bin, mais nous sommes sous Windows XP. On crée le répertoire C:\exe qui joura ce rôle. L'interface graphique doit pouvoir pemettre à l'utilisateur de lancer ces exécutables par simple clique. Cela se fait en utilisant des raccourcis et un répertoire les contenants qui se déroule comme un menu, appelé barre d'outils. On crée le répertoire C:\outils qui joura ce rôle, et on ajoute ce répertoire comme barre d'outils.

2) Installation d'une machine virtuelle Debian sur un PC hôte Windows

Télécharger une petite image amorçable pour CD à partir du site http://www.debian.org/ et déployez-la sur un CD. Cela constitura un CD bootable qui permettra d'installer Debian en téléchargeant les paquets logiciels via Internet.

Télécharger VirtualBox pour hôte Windows à partir du site http://www.virtualbox.org/ et installez-le.

Lancer Virtualbox, puis créer une machine virtuelle avec 384 Mo de mémoire vive et un disque dur de 4 Go et comme interface réseau, un pont avec l'interface réseau utilisée.

Insérer le CD dans le lecteur, démarrer la machine virtuelle, et installer Debian sur la machine virtuelle avec un minimum de paquets.

3) Post-installation

Mettre le système Debian à jours :

apt-get update
apt-get dist-upgrade

Ajouter le paquet ssh qui permet les connections distantes sécurisées :

apt-get install ssh

Modifier le fichier etc/network/interface comme suit, où gateway est l'adresse du routeur (ou de la livebox), netmask est le masque de sous-réseau, et address est une addresse libre affectée à la machine virtuelle :

etc/network/interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
     address 192.168.1.201
     netmask 255.255.255.0
     gateway 192.168.1.1

Arrêter :

halt
init 0
shutdown -h 0

Rebooter :

reboot
shutdown -r 0

Ouvrir une session avec WinSCP en saisissant l'adresse IP : 192.168.1.201, et.en modifiant la configuration en WinSCP|Préférence|Explorer.

Ouvrir une session avec Putty en précisant l'adresse IP : 192.168.1.201, et en modifiant la configuration : Windows|Translation|Receveid_data_assumed_to_be_in_which_character_set|UTF8.

Il est conseiller de se connecter comme simple utilisateur. Comme cela il n'est pas possible de modifier ou d'effacer les fichiers nécessaires au bon fonctionnement du système. On peut ouvrir une session root dans la continuité en tapant la commande suivante :

su

Le mot de passe de root vous sera demandé. Le prompt se termine par le caractère # qui signifit que vous avez les droits root. Quitter la session root de la même façon que l'on quitte une session avec la commande suivante :

exit

4) Modification de l'addresse MAC

Si on modifie l'adresse MAC de la carte réseau de la machine virtuelle, en modifiant sa configuration dans VirtualBox, celle-ci n'est plus reconnue par le système Debian, car l'adresse MAC est mentionnée dans le fichier suivant :

/etc/udev/rules.d/70-persistent-net.rules

Il faut effacer ce fichier puis rebooter la machine virtuelle, le fichier sera recréé avec la bonne adresse MAC.

5) Installation d'une seconde machine virtuelle en clônant le disque vdi

Ouvrir une fenêtre de commande MS-DOS. Positionnez-vous dans le dossier C:\Program Files\Oracle\VirtualBox et lancer la commande

vboxmanage clonevdi nom_complet_du_fichier_debian1.vdi nom_complet_du_fichier_debian2.vdi

Cela clône le disque debian1.vdi en le disque debian2.vdi.

Créer une seconde machine virtuelle et l'associer à un nouveau disque vdi existant. (Cliquer sur le symbole "Dossier" à droite, puis sur le bouton "Ajouter"). On modifie les paramètres réseau de la machine virtuelle en choisissant comme interface réseau, un pont avec l'interface réseau utilisée et avec une addresse MAC modifiée.

Lancer cette nouvelle machine, effacer le fichier contenant l'adresse MAC, et rebooter-là :

rm  /etc/udev/rules.d/70-persistent-net.rules
reboot

Modifier l'adresse IP de la machine virtuelle dans /etc/network/interface
Modifier le nom de la machine virtuelle dans /etc/hostname et dans /etc/hosts
Rebooter la machine virtuelle.

 

II) Compiler sous Linux des programmes C et C++

1) Installation de l'éditeur Notepad++ sur Windows

Pour écrire un programme il nous faut un éditeur pratique, nous avons besoin de l'éditeur Notepad++. C'est un traitement de texte avec coloration syntaxique pour différents langages de programmation. Télécharger Notepad++ à partir du site http://notepad-plus-plus.org/fr/download et installez-le sur votre PC Windows.

Lancer WinSCP, Ajouter dans View|Préférences|Editors le nouvel éditeur Notepad++ en précisant dans "Editor autoselection" les extensions suivantes : *.c; *.cpp; *.h, et placer-le en premier (bouton up).

2) Installation du compilateur gcc sur Debian

Pour compiler un programme C, nous avons besoin du compilateur gcc, et pour compiler un programme C++, nous avons besoin en plus du compilateur g++. Connectez-vous root et exécuter la commande :

apt-get install gcc g++

ou bien

apt-get install gcc
apt-get install g++

3) Programmation en C et en C++

Connectez-vous avec WinSCP avec un login utilisateur. Le répertoire courant est alors /home/<user>

Créer un fichier hello.c et Hello.cpp dans votre répertoire d'utilisateur, éditer-les avec NotePad++ (clique droit Edit), et écrire les programmes comme indiqués dans le tableau. Lors de la compilation, des fichiers objects hello.o et Hello.o peuvent être créés puis linkés pour produires les exécutables hello et Hello (On a différencié par une majuscule, pour que les fichiers objects des deux programmes, dont le nom par défaut est le même que celui du source correspondant avec comme extenssion "o", ne se supperposent pas).

4) Compilation et linkage

Connectez-vous avec Putty avec un login utilisateur. Le répertoire courant est alors /home/<user> et les fichiers sources y sont présents.

Compiler le programme C ou C++ en tapant les commandes comme indiqués dans le tableau :


Langage C
Langage C++
Programmation
hello.c

#include <stdio.h>

int main () {
    printf ("Bonjour\n");
    return 0;
}

Hello.cpp

#include <iostream>
using namespace std;

int main () {
    cout << "Bonjour" << endl;
    return 0;
}

Pour compiler en créant les fichiers objects

gcc -c hello.c
gcc hello.o
-o hello
g++ -c Hello.cpp
g++ Hello.o -o Hello
Pour compiler directement sans créer les fichiers objects
gcc hello.c -o hello g++ Hello.cpp -o Hello
Pour lancer l'exécutable
./hello ./Hello

Pour exécutez hello, vous devrez saisir ./hello et non simplement hello car la plupart des utilisateurs n'ont pas le répertoire en cours dans leur chemin de recherche.

L'option -c (c pour compile) précise le fichier source qui doit être compilé en un fichier object, sans effectuer de linkage.
L'option -o (o pour out) précise le nom du fichier qui sera créé, comme exécutable (par défaut "a.out"), ou bien comme fichier object (par défaut de même nom que celui du source avec l'extension "o")
Il n'est pas nécessaire qu'il y ait un espace entre l'option et le nom de fichier cible. Ainsi la commande g++ -chello.c -oHELLO va compiler le source hello.c en le fichier object HELLO.

Pour voir les librairies nécessaires au fonctionnement
ldd hello

  linux-gate.so.1 => (0xb77d9000)
  libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7678000)
  /lib/ld-linux.so.2 (0xb77da000)

ldd Hello

  linux-gate.so.1 => (0xb77cf000)
  libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76db000)
  libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb76b5000)
  libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb76a7000)
  libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb754c000)
  /lib/ld-linux.so.2 (0xb77d0000)
Autre commande
d'investigation
objdump -p hello | grep "lib"

  NEEDED libc.so.6
  required from libc.so.6:
objdump -p Hello | grep "lib"

  NEEDED libstdc++.so.6
  NEEDED libm.so.6
  NEEDED libgcc_s.so.1
  NEEDED libc.so.6
  required from libstdc++.so.6:
  required from libc.so.6:

5) Programmation modulaire en C++

Prenons un exemple plus complexe composé de 3 fichiers sources d'extension "cpp" et de 2 fichiers entêtes d'extension "h" :

A.h

#ifndef A_H_
#define A_H_

#include <iostream>
using namespace std;

class A {
public:
    int x,y;
    A f(A u);
};

#endif

B.h

#ifndef B_H_
#define B_H_

#include "A.h"

class B : public A {
public:
    int z;
    B g(B u);
};

#endif

main.cpp

#include "B.h"

int main() {
    B u,v;
    cin >> u.x >> u.y >> u.z;
    v = u.g(u).g(u.g(u));
    cout <<"K=("<<v.x<<","<<v.y<<","<<v.z<<")"<<endl;
    return 0;
}

A.cpp

#include "A.h"
#include <math.h>

A A::f(A u){
    A v;
    v.x = floor(log(x*x + y*y));
    v.y = u.x * u.y ;
return v;
}

B.cpp

#include "B.h"

B B::g(B u){
    B v;
    A w = f(u);
    v.x = w.x;
    v.y = w.y;
    v.z = z + u.z;
    return v;
}

 

Voici 3 façons de compiler ce programme en un exécutable prog :

Compilation directe
g++ main.cpp A.cpp B.cpp -o prog
Compilation en créant les fichiers objects
g++ -c main.cpp
g++ -c A.cpp
g++ -c B.cpp
g++ main.o A.o B.o -o prog
Compilation en créant les fichiers objects sous d'autres noms
g++ -c main.cpp -o MAIN
g++ -c A.cpp -o A
g++ -c B.cpp -o B
g++ MAIN A B -o prog

Pour exécuter le programme sur l'entré 3 4 1, on peut tapez la commande suivante :

echo "3 4 1" | ./prog

et vous verrez s'afficher le résultat : K=(5,36,4)

Les librairies utilisées par le programme prog peuvent être affichées :

Pour voir les librairies nécessaires au fonctionnement
ldd prog

  linux-gate.so.1 => (0xb77cf000)
  libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76db000)
  libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb76b5000)
  libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb76a7000)
  libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb754c000)
  /lib/ld-linux.so.2 (0xb77d0000)

Autre commande
d'investigation
objdump -p prog | grep "lib"

  NEEDED libstdc++.so.6
  NEEDED libm.so.6
  NEEDED libgcc_s.so.1
  NEEDED libc.so.6
  required from libm.so.6:
  required from libc.so.6:
  required from libstdc++.so.6:

 

III) Compiler sous Windows, avec Cygwin GCC ou MinGW GCC

1) Cygwin

Cygwin est un mini système d'exploitation UNIX qui s'installe en surcouche sur un système Windows.

Cygwin est également un environnement de développement pour Windows. Les distributions de logiciels fonctionnant sous UNIX considèrent Cygwin comme un OS à part entière et intègrent la possibilité de générer un Makefile permettant la compilation de projets Unix sous Cygwin avec la procédure classique :

./configure ; make ; make install

Les exécutables compilés avec gcc requièrent la présence de la DLL cygwin1.dll pour s'exécuter. On pourra placer cette DLL dans le répertoire C:\Windows. Si l'application développée n'utilise aucune fonctionnalité Unix (les signaux, par exemple) alors elle peut être compilée avec l'option -mno-cygwin, pour produire un exécutable indépendant de cette DLL, une application purement Windows.

Cygwin est livré avec d'autres outils pour les développeurs : make bien sûr, mais aussi des langages de scripts comme Perl, Python et Ruby.

Il est également possible d’utiliser Cygwin pour se connecter à un ordinateur distant. Mais le montage d'un serveur sshd sur cygwin est un peu compliqué du fait que les serveurs doivent être montés comme des services Windows.

Cygwin respecte toutes les normes d’UNIX. Le répertoire Cygwin respecte le même type de hiérarchie que celui des environnements UNIX. On retrouve ainsi à la racine de Cygwin les composants suivants :

Répertoire Description
/bin Ensemble des dll et programmes
/tmp Contient les données temporaires des différents programmes(parfois, /tmp est un lien symbolique vers /var/tmp)
/etc Contient les fichiers de configuration généraux de tous les programmes du système
/etc/bashrc contient les alias et fonctions globales au système
/etc/profile positionne globalement les variables d’environnement et lance les programmes de démarrage communs
/home Est réservé à l’hébergement des comptes des utilisateurs (un sous-dossier par personne)
/lib Ensemble des librairies
/sbin Contient des commandes nécessaires lors du démarrage de Cygwin, mais en général inutiles pour les utilisateurs
/usr Contient tous les programmes et fichiers de données qui ont pour caractéristiques de ne pas être nécessaires au démarrage de la machine
/usr/local Contient les programmes compilés par l’utilisateur
/var Contient des données mises à jour par différents programmes durant le fonctionnement du système

Cygwin est actuellement maintenu par les employés de Red Hat et d'autres programmeurs.

2) Installation de Cygwin

Télécharger le setup.exe à l'URL http://www.cygwin.com/ qui permet d'installer et de compléter l'installation à volonté de Cygwin via Internet

Il convient de placer des programmes d'installation dans un répertoire prévu à cette efffet. On crée le répertoire C:\Install qui joura ce rôle, et un sous-répertoire C:\Install\Cygwin qui contiendra le setup.exe ainsi que tous les paquets d'installations récupérés via internet.

  1. Lancer setup.exe.
  2. Download Source : Install from Internet
  3. Root Directory : C:\cygwin
    Install for : All users
  4. Local Package Directort : C:\Install\cygwin
  5. Your Internet Connection : Direct Connection
  6. Site : http://cygwin.cict.fr (choisire dans la liste proposée)
  7. Choisire les paquets à installer :
        Devel : gcc, gcc-core, gcc-g++, make
        Net : inetutils, openssh, ping

A chaque lancement du setup.exe ces paramètres seront proposés par défaut, et on pourra compléter l'installation avec d'autres paquets proposés, téléchargeable automatiquement via l'Intenet.

Pour lancer le shell cygwin, menu Programmes|Cygwin|Cygwin_Bash_Shell ou lancer le script C:\cygwin\cygwin.bat

Le répertoire par défaut est /home/<user> et correspond au répertoire C:\cygwin\home\<user> Copiez-y les fichiers sources c-a-d les fichiers d'extension "cpp" et "h". Cela peut se faire par un glisser-déplacer entre les fenêtres de WinSCP et de l'explorateur Windows, ou plus simplement, en ligne de commande :

scp dmabboux@192.168.1.201:*.cpp .
scp dmabboux@192.168.1.201:*.h .

L'exemple précédent peut être compilé :

g++ A.cpp B.cpp main.cpp -o prog

Les librairies utilisées par le programme prog.exe peuvent être affichées :

Pour voir les librairies nécessaires au fonctionnement
ldd prog

  ntdll.dll => /cygdrive/c/WINDOWS/system32/ntdll.dll (0x7c910000)
  kernel32.dll => /cygdrive/c/WINDOWS/system32/kernel32.dll (0x7c800000)
  cygwin1.dll => /cygdrive/c/WINDOWS/cygwin1.dll (0x61000000)
  ADVAPI32.DLL => /cygdrive/c/WINDOWS/system32/ADVAPI32.DLL (0x77da0000)
  RPCRT4.dll => /cygdrive/c/WINDOWS/system32/RPCRT4.dll (0x77e50000)
Autre commande d'investigation
objdump -p prog | grep "DLL Name "

  DLL Name: cygwin1.dll
  DLL Name: KERNEL32.dll

L'exemple précédent peut être compilé en intégrant cygwin1.dll dans l'exécutable :

g++ A.cpp B.cpp main.cpp -o prog -mno-cygwin

Les librairies utilisées par le programme prog.exe sont alors :

Pour voir les librairies nécessaires au fonctionnement
ldd prog

  ntdll.dll => /cygdrive/c/WINDOWS/system32/ntdll.dll (0x7c910000)
  kernel32.dll => /cygdrive/c/WINDOWS/system32/kernel32.dll (0x7c800000)
  msvcrt.dll => /cygdrive/c/WINDOWS/system32/msvcrt.dll (0x77be0000)
Autre commande d'investigation
objdump -p prog | grep "DLL Name "

  DLL Name: msvcrt.dll
  DLL Name: msvcrt.dll
  DLL Name: KERNEL32.dll

(Noter que avec cygwin l'extension "exe" est implicite pour les fichiers exécutables)

3) Msys (MinGW)

Msys fait partie du projet MinGW qui signifie Minimal Gnu for Windows. C'est un mini système Linux qui s'installe en surcouche sur un système Windows, et qui reprend quelques commandes MS-DOS.

Msys est un environnement de développement pour Windows. Comme pour cygwin, les distributions de logiciels fonctionnant sous Linux peuvent s'installer avec la procédure classique :

./configure ; make ; make install

L'installation de Msys peut se faire automatiquement en installant l'IDE (Integrated Development Environment) Wascana, c'est une plateforme de développement.

Pour lancer le shell Msys, menu Programmes|Wascana|Wascana_Shell ou lancer le script C:\Wascana\msys\msys.bat

Le répertoire par défaut est /home/<user> et correspond au répertoire C:\Wascana\msys\home\<user> Copiez-y les fichiers sources c-a-d les fichiers d'extension "cpp" et "h". Cela peut se faire par un glisser-déplacer entre les fenêtres de WinSCP et de l'explorateur Windows, ou plus simplement, en ligne de commande :

scp dmabboux@192.168.1.201:*.cpp .
scp dmabboux@192.168.1.201:*.h .

Les paramètres réseaux s'obtiennent avec la commande ipconfig (et non ifconfig), en effet, certaine commandes MS-DOS sont intégrées dans le shell Msys.

L'exemple précédent peut être compilé :

g++ A.cpp B.cpp main.cpp -o prog

Pour voir les librairies nécessaires au fonctionnement
objdump -p prog | grep "DLL Name"

  DLL Name: KERNEL32.dll
  DLL Name: msvcrt.dll
  DLL Name: msvcrt.dll

4) Plateforme de développement Wascana

Télécharger Wascana à partir du site http://wascana.sourceforge.net/   (wascana-1.0-setup.exe) et installez-le en choisissant comme répertoire d'install C:\Wascana. Wascana comprend les composantes suivantes : Eclipse Helios C/C++ IDE, Java JRE, Msys, MinGW (gcc, g++, gdb, make...)

Pour lancer l'IDE Wascana, menu Programmes|Wascana|Wascana_Eclipse

Choisissez comme workspace par défaut : C:\Wascana\workspace

Créer un nouveau projet C++, et choisissez "Hello World C++ Project". Deux compilateurs sont proposés : Cygwin GCC ou MinGW GCC. (Wascana propose le compilateur Cygwin GCC que si Cygwin a été installé.)

Lors de la compilation, la console de Wascana affiche les commandes de compilation qui sont exécutées :

Avec le compilateur MinGW :

g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\B.o ..\src\B.cpp
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Dom.o ..\src\Dom.cpp
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\A.o ..\src\A.cpp
g++ -oDom.exe src\Dom.o src\B.o src\A.o

Avec le compilateur Cygwin :

g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/A.d" -MT"src/A.d" -o"src/A.o" "../src/A.cpp"
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/B.d" -MT"src/B.d" -o"src/B.o" "../src/B.cpp"
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Dom.d" -MT"src/Dom.d" -o"src/main.o" "../src/main.cpp"
g++ -o"prog.exe" ./src/A.o ./src/B.o ./src/main.o

Les options en rouge sont -O le niveau d'optimisation 0,1,2,3, et -g le niveau de débogage 1,2,3.
L'option -Wall affiche tous les avertissements.
Les options en vert concernent la création du fichier Makefile et des fichiers associés d'extension "d".

Pour changer de compilateur : Clique droit sur le dossier du Projet|Properties|C/C++ Build|Tool_Chain_Editor
Pour modifier les options : Clique droit sur le dossier du Projet|Properties|C/C++ Build|Settings

L'exécutable compilé avec Cygwin GCC, a impérativement besoin de la DLL cygwin1.dll pour fonctionner. Placer cette DLL dans C:\Windows ou dans le répertoire de l'exécutable. Si l'on veut créé un exécutable indépendant de cygwin1.dll on ajoute l'option -mno-cygwin.

g++ -mno-cygwin -o"prog.exe" ./src/A.o ./src/B.o ./src/main.o

Pour passer du mode Debug à Release : Clique droit sur le dossier du Projet|Properties|C/C++ Build|Settings|Manage_Configurations. Cela change les options d'optimisation en les mettant au meilleur -O3 et cela enlève les options de débogage.

VI) La librairie graphique FOX avec Msys et Wascana

Télécharger la dérnière version stable de FOX toolkit pour Windows à partir du site http://www.fox-toolkit.org/ et dézipper-le. Mettre le répertoire racine de FOX Toolkit dans Msys et rénomer-le en C:\Wascana\msys\fox, dans le système Msys cela correspond au répertoire /fox

L'installation de la bibliothèque se fait simplement en ce plaçant dans le répertoire racine /fox et en lançant :

./configure ; make ; make install

On remarquera que l'installation a compilé des exemples dans /local/bin, et a placer les fichiers entêtes dans /local/include/fox, et a compiler des librairies dans /local/lib, et a placer de la documentation dans /local/share/doc/

On peut tester le bon fonctionnement des applications en les lançant. On peut tester le bon fonctionnement des applications testes qui sont toujours dans le répertoire /fox/tests, c-a-d dans le répertoire C:\wascana\msys\fox\tests, en les lançant. Certaines peuvent ne pas fonctionner parceque certaine fonctionnalité, pilotes..., sont manquants. Cela n'est pas anormale. Noter qu'il existe un fichier Makefile dans ce répertoire tests.

Pour connaître les options de compilation qui ont étés utilisées pour produire ces exécutables, nous allons simplement lire le compte rendu de la commande make lancé après avoir effacé le fichier object hello.o et le fichier exécutable hello.exe dans le répertoire C:\Wascana\msys\fox\tests, forçant ainsi la reconstruction de ces deux fichiers, la compilation en le fichier hello.o et le linkage en le fichier hello.exe. Ouvrir un shell Msys et positionnez-vous dans le répertoire /fox/tests :

cd /fox/tests
rm hello.o hello.exe
make > toto.txt

Grace à la redirection, le fichier toto.txt récupère la sortie standart de la commande make :

toto.txt
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"fox\" -DVERSION=\"1.6.37\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DX_DISPLAY_MISSING=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DWIN32=1 -DUNICODE=1 -DHAVE_VSSCANF=1 -DHAVE_VSNPRINTF=1 -DHAVE_STRTOLL=1 -DHAVE_STRTOULL=1 -I. -I. -I../include -I../include -g -O2 -DFOX_THREAD_SAFE=1 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DNO_XIM -Wall -W -Woverloaded-virtual -Wformat -DHAVE_GLU_H=1 -DHAVE_GL_H=1 -c hello.cpp

/bin/sh ../libtool --mode=link g++ -g -O2 -DFOX_THREAD_SAFE=1 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DNO_XIM -Wall -W -Woverloaded-virtual -Wformat -DHAVE_GLU_H=1 -DHAVE_GL_H=1 -mwindows -e _mainCRTStartup -o hello.exe hello.o ../src/libFOX-1.6.la -lm -lcomctl32 -lwsock32 -lwinspool -lmpr -lgdi32 -lm -lglu32 -lopengl32

g++ -g -O2 -DFOX_THREAD_SAFE=1 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DNO_XIM -Wall -W -Woverloaded-virtual -Wformat -DHAVE_GLU_H=1 -DHAVE_GL_H=1 -mwindows -e _mainCRTStartup -o hello.exe hello.o ../src/.libs/libFOX-1.6.a -lcomctl32 -lwsock32 -lwinspool -lmpr -lgdi32 -lglu32 -lopengl32

Il y a trois lignes, la premières compile en hello.o, la seconde exécute une commande shell libtool, la troisième effectue le linkage en hello.exe.

Les options -D* ne sont pas utiles, les options -I. et -I../include correspondent à des répertoires de fichiers d'entêtes (d'extention "h") déjà traité par Wascana, ../src/.libs/libFOX-1.6.a correspond à l'option -IC:\Wascana\msys\local\include\fox-1.6. C'est l'ajout du répertoire d''entête fox-1.6 :

Clique droit sur le dossier du Projet|Properties|C/C++ Build|Settings|GCC C++ Compiler| Includes| button Add, puis saisire : C:\Wascana\msys\local\include\fox-1.6

/bin/sh ../libtool est une commande avant l'odre de linkage qui n'est pas utile.

On ne retiendra comme option supplémentaire pour le linkage : -Wall -mwindows -LC:\Wascana\msys\local\lib -lFOX-1.6 -lglu32 -lopengl32 -lcomctl32 -lwsock32 -lwinspool -lgdi32 -lmpr -lCHART-1.6

Clique droit sur le dossier du Projet|Properties|C/C++ Build|Settings|MinGW C++ Linker|Librairies|Librairy serch path (-L)| puis ajouter le répertoire : C:\Wascana\msys\local\lib
Clique droit sur le dossier du Projet|Properties|C/C++ Build|Settings|MinGW C++ Linker|Librairies|Libraies (-l)| puis ajouter les librairies :
   FOX-1.6
   CHART-1.6
   glu32
   opengl32
   comctl32
   wsock32
   winspool
   gdi32
   mpr
(Cela correspond aux fichiers : libFOX-1.6.a, libCHART-1.6.a, libglu32.a, libopengl32.a, libcomctl32.a, libwsock32.a, libwinspool.a, libgdi32.a, libmpr.a. Le préfixe "lib" et l'extention "a" sont ajoutés.)
Clique droit sur le dossier du Projet|Properties|C/C++ Build|Settings|MinGW C++ Linker|Linker flags : -Wall -mwindows

On choisie une application teste tel que groupbox.exe. On recopie le programme contenu dans groupbox.cpp à la place du code du programme type "Hello World C++ Project" que l'on a précédement créé pour tester Wascana. Et on modifie les paramètres de compilation comme décrit à l'instant.

On relance la compilation par Project|clean et la console de Wascanna affiche les commandes de compilation qui sont exécutées :

g++ -IC:\Wascana\msys\local\include\fox-1.6 -O0 -g3 -Wall -c -fmessage-length=0 -osrc\hello.o ..\src\hello.cpp
g++ -LC:\Wascana\msys\local\lib -Wall -mwindows -ohello.exe src\hello.o -lFOX-1.6 -lCHART-1.6 -lglu32 -lopengl32 -lcomctl32 -lwsock32 -lwinspool -lgdi32 -lmpr


D. Mabboux-Stromberg