[[PageOutline]] = Prérequis = Cette page rassemble quelques prérequis. Il est nécessaire d'avoir lu et compris ce qui se trouve ici avant de commencer à travailler avec Fl-AIR. == 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 celui-ci] for C * [http://fr.openclassrooms.com/informatique/cours/programmez-avec-le-langage-c celui-ci] for C++ == Linux == Si vous désirez installer Linux sur votre PC, une distribution recommandée est [http://linuxmint.com/ 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 [http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux 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 [http://www.gnu.org/software/emacs/ emacs] et [http://joe-editor.sourceforge.net/ joe] présentés dans le tutoriel ne sont pas installés pas défaut. Les éditeurs présent sur la cible sont [http://ex-vi.sourceforge.net/ vi] et [http://www.nano-editor.org/ nano]. Ce [http://www.siteduzero.com/tutoriel-3-12791-nano-l-editeur-de-texte-du-debutant.html 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 [#serial série], soit en [#ssh SSH]). == Console série == #serial 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 [https://fedorahosted.org/gtkterm/ gtkterm] ou [http://cutecom.sourceforge.net/ cutecom]. == SSH == #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 }}} où ''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 [wiki:network 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 }}} 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" }}}