[[PageOutline]] = 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): * [http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c this one] for C * [http://fr.openclassrooms.com/informatique/cours/programmez-avec-le-langage-c this one] for C++ == Linux == Flair work on linux only. If you want to install it on your computer, one recommended distribution is [http://linuxmint.com/ Mint] as it is popular, convivial and easy to install. All documentation in this wiki is based on Mint, but it should work with other distributions. Whatsoever the distribution you choose, install the 65 bit version of it. Flair only supports 64 bit hosts. To use Flair, you have to know some basics about linux (how to launch a program, configure wifi, etc). Moreover a lot of operations are done through the command line. To learn the command line, you can read this [http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux tutorial] or any equivalent. Please note that on target (unlike on computer), the only user is the root one, without password by default. On the target, the default text editor are [http://ex-vi.sourceforge.net/ vi] and [http://www.nano-editor.org/ nano]. You can read [http://www.siteduzero.com/tutoriel-3-12791-nano-l-editeur-de-texte-du-debutant.html this page] for example to begin with nano. In this wiki, commands that must be entered in a linux console on your computer (host) will be indicated as above with a ''$'': {{{ $ command }}} Commands that must be entered in a linux console on the target will be indicated as above with a ''#'': {{{ # command }}} But be careful, the target does not have any keyboard (nor screen!). So the command must be entered from your computer, on a terminal connected to the target, either by [#serial serial], or by [#ssh SSH]). == Serial console == #serial Serial console allows to connect to the target to access the bootloader (u-boot), or to have a linux console. The console is also accessible through the network . Yet, if network does not work, serial console is the only way to talk to the target! You can use [https://fedorahosted.org/gtkterm/ gtkterm] or [http://cutecom.sourceforge.net/ cutecom]. == SSH == #ssh ''Secure SHell'' (SSH) is both a program and a secured communication protocol. It can connect remotely to a computer through network. The computer we connect to is called the server, and the computer used to connect to the server is called the client. To connect to a SSH server, the command is like this: {{{ $ ssh user@server }}} where ''user'' is the user name we want to connect to the ''server''. ''server'' field can be either the name of the server or its IP address. For example, to connect to ''storage'' as ''toto'': {{{ $ ssh toto@storage }}} To connect to a target (once netwok is configured, see [wiki:network this page]): {{{ $ ssh root@192.168.147.63 }}} IP address as to be adapted to your case. Note that the first time you connect to a SSH server, you will be asked a confirmation as this server is not a knwon ''hosts''. == 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 }}} où ''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 [#wifi 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 [http://rapidsvn.tigris.org/ rapidsvn], [http://www.rabbitvcs.org/ rabitvcs], etc... == CMake == [http://www.cmake.org/ 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" }}}