Installation de compilateur croisé
1. Role de compilateur croise
Permet de compiler un programme source sur une machine hôte et de produire un
exécutable pour une machine cible.
2. Commandes utilises
sudo apt-get update
sudo apt-get install build-essential gcc-arm-linux-gnueabihf
gedit hello.c
arm-linux-gnueabihf-gcc hello.c -o helloarm
// compiler le fichier source hello.c en utilisant le compilateur croisé ARM et de
générer un exécutable ARM appelé helloarm. L'exécutable résultant pourra être
exécuté sur une plate-forme ARM cible, telle qu'un système embarqué ou un
microcontrôleur compatible ARM.
sudo apt install qemu-user
// permet d'émuler l'exécution d'applications compilées pour une architecture
spécifique (par exemple, ARM) sur une architecture différente (par exemple, x86). Cela
permet d'exécuter des binaires conçus pour une architecture cible sur un système hôte avec
une architecture différente, sans avoir besoin d'une machine virtuelle complète.
qemu-arm hello
sudo ln -s /usr/arm-linux-gnueabihf/lib/[Link].3 /lib/
// crée un lien symbolique entre le fichier
qemu-arm -L /usr/arm-linux-gnueabihf/ helloarm
// affiche le message hello world
Building a cross-compiling toolchain
1. Rôle
// La chaîne d'outils de compilation croisée comprend
généralement un compilateur, un éditeur de liens, des
bibliothèques et d'autres outils nécessaires à la construction
du logiciel.
3. Commandes utilises
sudo apt install build-essential git autoconf bison flex texinfo help2man gawk libtool-bin
libncurses5-dev unzip
$ git clone [Link]
cd crosstool-ng/
// Crosstool-NG est un outil populaire utilisé pour construire des chaînes d'outils de
compilation croisée.
git checkout 7622b490
// t utilisée pour passer à une version spécifique d'un dépôt Git. L'argument fourni après la
commande "git checkout" est généralement un identifiant de commit, une branche ou une
étiquette.
./bootstrap
// initialiser ou préparer un projet avant de le construire.
./configure --enable-local
// utilisée pour configurer les options de compilation et générer les fichiers de configuration
nécessaires avant de construire le logiciel
sudo apt-get install python3-dev
python3 --version
/ct-ng menuconfig
// pour lancer une interface de configuration basée sur des menus qui permet de
personnaliser la construction de la chaîne d'outils de compilation croisée.
./ct-ng list-samples
//Crosstool-NG affiche une liste des différents exemples de configurations
./ct-ng armv8-rpi3-linux-gnueabihf
// utilisée avec Crosstool-NG pour démarrer la configuration d'une chaîne d'outils de
compilation croisée pour l'architecture ARMv8 destinée à la Raspberry Pi 3
./ct-ng savedefconfig
./ct-ng build
75 ./ct-ng build
Installation system call
1. Rôle
Les appels système permettent aux programmes d'accéder aux fonctionnalités et aux ressources
du système d'exploitation, comme la gestion des fichiers, les opérations d'entrée/sortie, la
gestion des processus, la communication interprocessus, la gestion des signaux, etc.
2. Commandes utilises
sudo apt install gcc build-essential libncurses-dev libssl-dev libelf-dev bison flex -y
// "libssl-dev" : C'est une bibliothèque de développement pour OpenSSL, qui est une
implémentation open source du protocole SSL/TLS. Elle est utilisée pour sécuriser les
communications réseau.
"libelf-dev" : C'est une bibliothèque de développement pour le format de fichier binaire ELF
(Executable and Linkable Format) utilisé par de nombreux systèmes d'exploitation Unix et
Linux. Elle fournit des fonctionnalités pour travailler avec les fichiers ELF.
"bison" : C'est un générateur de parseur utilisé pour analyser la syntaxe de fichiers sources. Il
est souvent utilisé dans le processus de compilation pour générer des analyseurs syntaxiques
pour différents langages de programmation.
"flex" : C'est un générateur de scanner lexical utilisé pour analyser et traiter des fichiers
sources.
sudo apt install dwarves
// commande pour l'analyse et le débogage de fichiers exécutables ELF (Executable and
Linkable Format) et de fichiers de débogage DWARF associés
sudo apt clean && sudo apt autoremove -y
wget -P ~/ [Link]
tar -xvf ~/[Link] -C ~/
cd linux-5.19
uname -a
// version
mkdir helloworld
gedit helloworld/helloworld.c
gedit helloworld/Makefile
gedit Makefile
gedit include/linux/syscalls.h
gedit arch/x86/entry/syscalls/syscall_64.tbl
sudo make menuconfig
gedit .config
sudo gedit .config
nproc
// afficher le nombre de processeurs disponibles sur le système.
sudo make modules_install -j12
// utilisée pour installer les modules du noyau Linux après leur compilation à l'aide de la
commande "make" dans le répertoire source du noyau.
sudo make install -j12
// utilisée pour installer le noyau Linux
sudo update-grub
// mettre à jour le fichier de configuration GRUB (Grand Unified Bootloader). GRUB est un
chargeur de démarrage qui permet de sélectionner et de démarrer différents systèmes
d'exploitation installés sur votre machine
sudo shutdown -r now ake-j12
// redémarrer le système immédiatement.
gcc programname.c
./[Link]
//rechercher le fichier exécutable "[Link]" dans le répertoire
courant et tenter de l'exécuter
Dmesg
// afficher les messages du noyau du système
sudo make clean -j12
raspberry Pi 3 - Buildroot – Linux
1. Role buildroot
Il permet de compiler un système d'exploitation minimal avec les paquets
logiciels nécessaires pour une application spécifique .
4. Commandes utilises
wget [Link]
tar xvf [Link].bz2
cd [Link].bz2
make raspberrypi3_defconfig
make
ls output/images/