wiki:prerequisite

Version 4 (modified by Sanahuja Guillaume, 21 months ago) (diff)

--

Prerequisite

This page gathers some prerequisites. It is necessary to read and understand everything in this page before starting to work with Flair.

C/C++

Fl-Air is written in C++. To develop on this framework, you need to understand C and C++.

Here are lessons (in French):

Linux

Si vous désirez installer Linux sur votre PC, une distribution recommandée est Mint car elle est populaire, conviviale et assez simple à installer. Par ailleurs, l'ensemble de la documentation suppose que vous possédez une distribution Mint. Quelle que soit la distribution choisie, faire attention à bien choisir la version 64 bits si votre processeur le support (cas de tous les PC récents).

La compilation et l'exécution de programmes s'effectuent sous Linux. Il faut donc avoir quelques connaissances de ce système pour pouvoir l'utiliser (par exemple pour lancer un programme, configurer le wifi, etc). De plus, beaucoup d'opérations se font depuis la ligne de commande.

Pour débuter sur la ligne de commande, vous pouvez lire ce tutoriel ou tout autre équivalent. Il est à noter que sur la cible (contrairement au PC), le seul compte est celui de l'administrateur (login root), qui n'a pas de mot de passe. De plus, sur la cible les éditeurs de texte emacs et joe présentés dans le tutoriel ne sont pas installés pas défaut. Les éditeurs présent sur la cible sont vi et nano. Ce tutoriel peut par exemple être lu pour débuter avec nano.

Par la suite (et dans toutes les pages de ce wiki), les commandes qui doivent être entrées dans une console Linux sur votre PC seront indiquées de la façon suivante, avec un symbole $:

$ commande

Les commandes devant être entrées sur la cible seront indiquées de la façon suivante, avec un symbole #:

# commande

Attention, la cible ne possède pas de clavier! Ce type de commande est donc à lancer depuis un terminal de votre PC connecté à la cible (soit en série, soit en SSH).

Console série

La console série permet de se connecter à la cible soit pour accéder à U-Boot (c'est le seul moyen), soit pour accéder à une console Linux. La console Linux est aussi accessible via le réseau. Cependant, lorsque celui-ci ne fonctionne pas, la console série est l'unique moyen de se connecter à la cible.

Sous Linux, on peut utiliser par exemple gtkterm ou cutecom.

SSH

Secure SHell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Il permet notamment de se connecter à distance à un autre ordinateur par le réseau. L'ordinateur auquel on se connecte est appelé serveur, et celui qui sert à se connecter est appelé client.

Pour se connecter à un serveur SSH, la commande est de la forme:

$ ssh utilisateur@serveur

utilisateur est le nom de l'utilisateur avec lequel on veut se connecter au serveur. Le champ serveur peut être soit le nom du serveur, soit son adresse IP. Par exemple, pour se connecter à storage en tant que toto:

$ ssh toto@storage

Pour se connecter à la cible par le réseau (une fois le réseau configuré, voir cette page?):

$ ssh root@192.168.6.1

L'adresse IP étant à adapter à votre cas.

A noter que la première fois que vous vous connectez à un serveur SSH, il vous sera demandé une confirmation car le serveur ne fait pas encore partie des hosts connus.

SCP

Secure CoPy (SCP) est un moyen sécurisé de copie de fichiers entre ordinateurs basé sur le protocole SSH. Il nous permet notamment d'envoyer à la cible des fichiers de notre ordinateur.

Pour copier un fichier vers un autre ordinateur, utiliser la commande:

$ scp chemin_vers_source utilisateur@serveur:/chemin_vers_destination

chemin_vers_source est le chemin du fichier source, utilisateur le compte qui va se connecter au serveur, et chemin_vers_destination l'endroit où placer le fichier sur le serveur. Par exemple, pour copier le fichier test se trouvant dans votre répertoire personnel dans le dossier /home/root de la cible (une fois le wifi configuré, voir section précedente):

$ scp ~/test root@192.168.6.1:/home/root

SVN

SVN ou Subversion est un système de gestion de version.

On l'utilise généralement via la ligne de commande (svn checkout, svn up, svn commit). Il existe aussi des clients graphiques tels que rapidsvn, rabitvcs, etc...

CMake

CMake permet la génération de fichiers de construction standards (makefile, projets pour différents IDE), via des fichiers de configuration, appelés CMakeLists.txt. L'intérêt est de n'utiliser qu'un seul fichier de configuration (le CMakeLists.txt), quelque soit l'IDE pour lequel on veut construire le projet. Chacun peut alors utiliser l'IDE qu'il préfère. Par ailleurs, CMake s'adapte suivant le système d'exploitation utilisé.

L'utilisation de CMake passe par la ligne de commande.

Pour connaitre la liste des generators (type de fichiers de constructions), exécuter:

$ cmake --help

Ce qui donnera la syntaxe d'utilisation de CMake; à la fin se trouve la liste des generators. Sous Windows, on obtient par exemple:

The following generators are available on this platform:
  Unix Makefiles              = Generates standard UNIX makefiles.
  Ninja                       = Generates build.ninja files (experimental).
  CodeBlocks - Ninja          = Generates CodeBlocks project files.
  CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
  CodeLite - Ninja             = Generates CodeLite project files.
  CodeLite - Unix Makefiles    = Generates CodeLite project files.
  Eclipse CDT4 - Ninja        = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - Unix Makefiles
                              = Generates Eclipse CDT 4.0 project files.
  KDevelop3                   = Generates KDevelop 3 project files.
  KDevelop3 - Unix Makefiles  = Generates KDevelop 3 project files.
  Sublime Text 2 - Ninja      = Generates Sublime Text 2 project files.
  Sublime Text 2 - Unix Makefiles
                              = Generates Sublime Text 2 project files.

Ainsi, pour construire un projet pour CodeBlocks, lancer dans un répertoire contenant un fichier CMakeLists.txt:

$ cmake -G "CodeLite - Unix Makefiles"