git

Introduction GIT est un gestionnaire de version décentralisé écrit par Linux Torvalds (aussi inventeur du noyau Linux) Quelles sont les différences entre un VCS (Version Control System) décentralisé (comme GIT) et un centralisé (comme SVN) ? Dans GIT, les copies de travail (l’endroit où sont stockés le code et ses modiciations) sont locales. Pour partager le code, ou les mettre sur un dépôt central, il faut le faire explicitement. Dans SVN, toutes les informations sont centralisées sur un serveur central, à chaque commit.

awk

Définir les séparateurs

Entrée : FS

Pour définir le séparateur d’entrée : FS

BEGIN {
  FS=SUBSEP=” “
}
{
  #Traitement
}

Sortie : OFS

Pour définir le séparateur de sortie : OFS

cpp

Classe

Une classe définie un objet. Une classe est semblable à une struct du C. Sans spécification, par l’opérateur de portée, toutes ses données et fonctions (que l’on appelle méthodes) sont privées. Par défaut, elles sont publiques dans une struct.

Voici la définition d’une classe CClasse:

C++ et l'embarqué sous GNU/Linux

Retirer les patrons STL

Introduction

L’utilisation de la STL dans des projets embarqués pose un problème majeur, celui de la duplication de code dans les objets binaires. En effet les patrons (Qui sont des morceaux de code génériques) sont spécialisés durant la précompilation. On se retrouve vite avec plusieurs kilos de code pour rien. Pour contourner ce problème (Dû aux contraintes du monde embarqué.) il suffit d’encapsuler l’ensemble des patrons utilisés dans une classe à part. Ainsi le code des patrons de la STL sera centralisé dans un binaire, celui de la classe qui encapsule les patrons.
Imaginons qu’un binaire utilise abondamment les patrons STL. Tout d’abord il faut identifier les patrons STL utilisés par le binaire. Il est possible de récupérer la liste en utilisant : nm -C binaire.o.

cmake

Introduction

cmake, développé par Kitware est un outil d’aide à la génération de Makefile (cmake sait aussi générer des projets Microsoft Visual Studio, Borland …). Il permet de gérer pour nous beaucoup de problèmes, liés à la cross-compilation, compilation multi-plateforme.

Il remplace avantageusement les autotools (Set de 3 outils : libtool, automake et autoconf), qui ont de gros avantages mais aussi de gros inconvénients. En effet, ils automatisent beaucoup de choses comme cmake, mais à chaque évolution d’un des outils, il n’est pas étonnant d’avoir à modifier les fichiers de configuration dont la syntaxe à changée. De plus l’apprentissage de plusieurs langages de description (un pour automake, un pour autoconf, m4 …) est aussi un frein à leur utilisation.

cmake utilise un fichier CMakeLists.txt pour décrire la compilation d’un projet.