This page gathers some prerequisites. It is necessary to read and understand everything in this page before starting to work with Flair.
# C/C++
Flair is written in C++. To develop on this framework, you need to understand C and C++.
Here are lessons (in French):
*[this one](http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c) for C
*[this one](http://fr.openclassrooms.com/informatique/cours/programmez-avec-le-langage-c) for C++
# Linux
Flair work on linux only. If you want to install it on your computer, one recommended distribution is [Mint](http://linuxmint.com) 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 64 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 [tutorial](http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux) or any equivalent. Please note that on the target (unlike on computer), the only user is the root one, without password by default. On the target, the default text editor are [vi](http://ex-vi.sourceforge.net) and [nano](http://www.nano-editor.org). You can read [this page](http://www.siteduzero.com/tutoriel-3-12791-nano-l-editeur-de-texte-du-debutant.html) 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-console), or by [SSH](#ssh).
# Serial console
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 [gtkterm](https://fedorahosted.org/gtkterm) or [cutecom](http://cutecom.sourceforge.net).
# 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 network is configured, see [this page](network)):
`$ 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 known *host*.
# SCP
*Secure CoPy* (SCP) is a secured way to copy files between computer, it is based on SSH protocol. ITt can be used to send a file from your computer to the target.
where *path_to_the_file* is source file path, *user* the account to use on the *server*, and *destination_path* the directory to store the file on the *server*.
For example, to copy the file *test* in our home directory, to the folder */home/root* on the target:
`$ scp ~/test root@192.168.147.63:/home/root`
# GIT
GIT is a version control system.
It is generally used through its command line (*git clone*, *git commit*, *git push*). You can also use a graphical interface as [GIT Cola](https://git-cola.github.io/).
# CMake
[CMake](http://www.cmake.org) is a project (makefile or IDEs) generator, using input configuration files called *CMakeLists.txt*. Its strength is to use the same configuration files regardless of the IDE we want to use. Everyone can choose its preferred IDE. Moreover, it is also cross platform.
CMake is used through command line.
To know supported *generators* (kind of supported IDEs), execute:
`$ cmake --help`
Which gives the usage syntax of CMake. At the end you will find the *generators* list. On windows you will get for example:
```
The following generators are available on this platform:
Unix Makefiles = Generates standard UNIX makefiles.