Académique Documents
Professionnel Documents
Culture Documents
Le fait de générer des exécutables statiques permet de ne pas être lié à des bibliothèques système. Ainsi, ce type d'exécutable est généralement plus
portable. Mais comme l'exécutable embarque l'ensemble du code, au lieu de faire appel à des fonctions de bibliothèques partagées par l'ensemble des
applications, la taille de l'exécutable obtenu est généralement plus grande. Vous pouvez utiliser l'option -static de gcc lors de la compilation, pour générer
un exécutable statique.
Vous devez donc préciser où se trouvent les différentes librairies fournies avec la chaîne de compilation croisée. Dans notre cas, ces dépendances sont
dans le répertoire ~/Development-tools/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/arm-linux-gnueabihf/sysroota
Rq: On ecrit une(01) bonne fois pour toute,le repertoire ou se trouve les differentes librairies fournies avec la chaine de compilation croisee.
Pour les ulterieurs utilisations, on ajout l'option-static a la fin .
-Liste des paquetages: liste des paquets ou services pour mettre en place une architecture donnee possible.
Vocabulaire:
chroot: c'est un environnement dans laquelle on peut installer des chaines de cross compilation et de gcc compatible a une architecture.
bash : interpreteur de commande nouveau fourni par chroot
stretch-crossdev : C'est un dossier qui enferme l'interpreteur bash et ou on a stocke l'environnement chroot
dpkg: pour lister les differentes architectures que j'ai ajoutee a mon environnement
crossbuild: une des paquetages d'un environnement.
Commande:
dpkg: pour lister les differentes architectures que j'ai ajoutee a mon environnement
pwd(Print Working Directory): pour trouver le repertoire du travail dans laquelles vous etes actuellement.
cd: change directory
ls: c'est pour voir le contenu d'un repertoire
cat( abreviation de concatenate): utilisee pour lister le contenu d'un fichier sur le resultat
standard, example cat fichier.txt
cp: pour copier les fichiers du repertoire actuel dans un autre repertoire
syntaxe: cp source file/ destination file
mv: deplacer les fichiers (rq: les arguments de mv sont similaire a ceux de cp)
mkdir:pour creer un nouveau repertoire.
rmdir: pour supprimer un repertoire.
touch:- pour creer un nouveau fichier vierge via la ligne de commande linux.
-si |le fichier existant, il fait le mis a jour du file's timestamp sans editer le fichier existant.
locate: utilisee pour localiser un fichier (rq: l'utilisation de l'argument -i rendra la commande insensible a la casse)
find:pour rechercher des fichiers et des repertoires.
rm: pour supprimer un dossier
grep:pour rechercher un mot-clé, une phrase ou un motif spécifique dans un fichier . Il a plusieurs options :
grep -Rw ‘/chemin/vers/recherche/’ -e ‘motif’
grep –exclude=*.csv -Rw ‘/chemin/vers/recherche’ -e ‘motif’
grep –exclude-dir={dir1,dir2,*_old} -Rw ‘/chemin/vers/recherche’ -e ‘motif’
find . – nom « *.php » -exec grep « motif » {} ;
sudo(SuperUser Do) :permet d'effectuer des taches qui necessitents des autorisations adminstratives ou de root.
df: pour obtenir un rapport sur l'utilisation de l'espace disque du systeme, indiquee en pourcentage et en Ko.
du(Disk Usage):pour verifier l'espace occupe par un fichier ou un repertoire
head: pour visualiser les premieres lignes de n'importe quel fichier texte.
tail:affichera les 10 dernieres ligne d'un fichier texte
diff:compare le contenu de 2 fichiers ligne par ligne.
tar:pour archiver plusieurs fichiers dans un tarball.
chmod: utilisée pour modifier les permissions de lecture, d’écriture et d’exécution des fichiers et des répertoires.
chown: permet de changer ou de transférer la propriété d’un fichier à un utilisateur spécifique. ex:chown linuxuser2 fichier.ext
jobs:affichera tous les jobs actuels avec leur statut.(Un job est essentiellement un processus qui est lancé par le shell.)
kill:pour arreter manuellement un programme qui ne repond pas.
ping:pour vérifier votre état de connectivité à un serveur.
wget:utilisee pour télécharger des fichiers sur Internet.Pour ce faire, il suffit de taper wget suivi du lien de téléchargement.
uname(UnixName): imprimera des informations détaillées sur votre système Linux comme le nom de la machine, le système d’exploitation, le noyau, etc.
top: affichera une liste des processus qui sont en cours d’exécution et la quantité de CPU utilisée par chaque processus.
history: pour revoir les commandes que vous avez entrées auparavant.
man: fournit les instructions sur la fonction de certaines commandes .
echo: pour déplacer certaines données dans un fichier.
zip: pour compresser vos fichiers dans une archive zip
unzip: pour extraire les fichiers zippés d’une archive zip.
hostname:pour connaitre le nom de votre hote/reseau.
useradd: utilisé pour créer un nouvel utilisateur
passwd: l’ajout d’un mot de passe au compte de cet utilisateur.
userdel: pour supprimer un utilisateur
shutdown: pour eteindre ou redemarrer votre machine .
tree: affiche la structure en arbre des fichiers contenus dans un fichier , syntaxe: tree directory
------------------------------------------------------------
08-08-2022:
2eme technique: Connecter a linux a partir de Windows avec VNC(Connexion reseau virtuelle):
-Pour l'utiliser, on devra installer un logiciel dedie a VNC , sur la machine Linux et sous Windows une application cliente.
-L'une des options les plus populaires pour se connecter à Linux via VNC est TightVNC.
-Apres avoir telecharger VNC pour Windows, on devra installer le tightvncserver sur ma machine Linux, comme suit:
sudo apt update
sudo apt install tightvncserver #installation de tightvncserver
sudo tightvncserver #executer + definition de mot de passe (au plus 8 caracteres).
NB: Lors de l'execution de tightvncserver, on verra une notification affichant le numero de port, on doit le noter.
-Une fois tout cela est faite, voici comment on va connecter a la machine Linux depuis Windows:
1)- Executer l'app TightVNC Viewer sous Windows
2)- Entrez l'adresse IP et le numero de port
3)- Cliquez sur Connexion
4)- Entrons le mot de passe qu'on a defini lorsqu on y est invite.
-1ere option : Accès à distance Linux avec SSH dans Windows PowerShell :
->Dans Windows PowerShell, on entre comme CLI:
ssh [IP_ADDRESS]
-> Lorsqu'on nous sommes invitee, acceptons le certificat.
->Entrons le nom d'utilisateur et le mot de passe .
▪Scripts:
-permet d'automatiser les commandes utilisees
-adapter les commandes pour different scenarios utilisant des arguments et les variables
-script enregistre les series d'operations et complete quelque partie unique basee sur les variables qui sont adaptee aux scripts soit via ligne de
commande arguments ou via variables mentionnee dans le script.
-Script c'est un fichier texte qu'on peut executer et lancer comme une commande .
-utilise pour eviter la redondance de ligne de commande
-parfois ils sont des fichiers qui se terminent par .sh(short for shell)
-Tous les scripts commencent tjrs par #!/bin/sh ou #!/bin/bash au debut du script qui est appelee : "shebang" , role c'est pour indiquer au shell quel
interpreteur shell utiliser
Rq: #!/bin/sh : est aussi le chemin pour aller vers the root file system, qui fait reference a Bourne shell
+Execution de script:
On ecrit la ligne de commande suivante:
bash script.sh
Rq: Mais avant passer en exectutable, on doit activer la permission d'executer un fichier, comme suit
chmod +x script.h
10/08/2022:
-GitHub Classroom:
+On a ouvert le lien de master repository(depot) : voici le lien : https://github.com/cu-ecen-aeld/aesd-assignments
+Puis, on a liee le lien de master Git-repository contenant toutes les contenu du devoir a mon compte GitHub classroom, et pour pouvoir acceder a
cela, on entre dans ce lien: https://classroom.github.com/a/OTSBSmD0
Le nouveau Git-repository creee est vide, du coup, on devra le completer avec les contenu du master Git-repository.
https://docs.google.com/document/d/1MzDmZHpALwmnkAStSZQKY4TNuwKZdCRXw7zk62SciJM/edit*
▪YOCTO: est un open source collaboration qui aide les developpeurs a creer une Linux personnalisee base sur un systeme peu importe
l'architecture materiel.
-Le projet YOCTO fournit un ensemble flexible d'outils et une espace ouu les systemes embarques a l'echelle mondiale peuvent
partager les technologies, piles logicielles, les configurations, et les meilleures pratiques qui peuvent etre utilise pour creer du Linux images adaptees pour
l'embarque et appareil IoT, ou n'importe ouu la personnalisation Linux Os est demandee.
----------------------------------------------------192.168.1.195
192.168.56.1
DESKTOP-SH7QKNR
21/08/22:
Voici sont les choses qu'on demande pour le devoir1: Bash Scriptin basics:
+On doit completer le nouveau repository associe au devoir1 avec le contenu de Base assignement repository:
1-Installer Virtual Machine
2-Cloner le github repository cree from the github classroom link
3-Ajouter un controleur(remote) pour chercher la base de l'assignment , comme suit
git remote add assignments-base ou
Rq: Ne pas suivre les instructions sur la page de l'association github d'ajouter un README commit, voici le lien de la page https://github.com/cu-ecen-
aeld/aesd-assignments.git
4- "git fetch assignments-base ": cette commande
extrait le contenu localement et relier l'etat ancien a https://github.com/cu-ecen-aeld/aesd-assignments
5-"git merge assignments-base/master ":cette commande relie ma branche master avec la branche master de https://github.com/cu-ecen-
aeld/aesd-assignments
6-"git submodule update --int --recursive ": cette commande clone the assignment-autotest submodule et les git repositories imbriques
-On doit aussi installer et faire marcher l'automated testing pour mon assignment repository, pour faire cela on doit aller dans l'onglet Wiki
-Cela va me permettre d'utiliser un executeur(ou un debogueur, compilateur) de ma machine de verifier les commentaires que j'ai ecrit dans Github
Repository. Et verifie s'ils travaillent proprement et me donner des feedbacks s'il ya quelque chose qui ne fonctionne pas bien.
-Toutes les unites de test demandees, on peut les voir dans GitHub Actions et on peut executer une unite de script test si cette unite de test est
implemente proprement et completement dans Git repository adequate, cette execution de test est assure par la fonction test_validate
-Test_validate verifie juste si une assertion est vraie, cette fonction contient des valeurs par defaut codee difficilement
Rq:- Lorsqu'on Git quelque modules cela mis a jour recursivement et va cloner un repository(ou depot) et que toutes les contenus imbriques dans Git
repository va extraire toutes les contenus test dans mon repository
- Dans le 2eme devoir on va voir comment reutiliser une configuration executable precedente.
- Exemple d'assertion: unity assertion
-Dans le script de Test_validate_ username.c, on doit modifer une ligne de code afin de bien executer le script test :
->On a besoin de remplacer l'appel de fonction TEST_ASSERT_TRUE_MESSAGE(false,...)
par l'appel de fonction my_username() pour verifier ma com username
->On doit ajouter l'unity assertion tel que cela assure que les chaines de caracteres qu'on aura venant de la fonction username() correspond au
valeur de fichier de configuration de notre devoir(assignments)
->Et la valeur du fichier de configuration est la seule qu'on completera dans le conf/username.text file.
->dans le fichier de configuration conf, on remplacera juste le nom du fichier par your-github-username seulement
->puis, on verifiera si avec la fonction my_username(), on aura 2 valeurs qui sont egales .
->Alors, si ce dernier est satisfait, alors la fonction my_username est ecrite pour moi.
->Cela va avoir le malloc_username venant du fichier conf ecrit pour moi dans le Git.
->Ce malloc_username va avoir les valeurs venant du fichier de configuration pour l'username GitHub.
->Et puis, on appelera la fonction my_username() dans autotest-validate.c pour obtenir mon nom d'utilisateur (ou username) codee en materiel.
->Puis le test_validate_username.c a besoin d'avoir ce test_asser_equal_string_message pour verifier si les 2 chaines de caracteres sont egaux.
->Apres l'username va etre maintenant implemente dans le fichier autotest-validate.c donc on met a jour mon username dans autotest-
validate.c
->On doit verifer si le fichier conf et mon fichier c acceptent l'installation de mon username Github.
NB: L'username doit imperativement correpondre soit a mon fichier conf et soit a mon fichier c .
Rq: Toutes les bases de notre test unite sont mises en place . Alors pour avoir une reelle application simple, on va ajouter quelques test system,
->Alors on va ecrire "Finder app"
(tel que Finder apps va avoir un couple de scripts qui fait reelement quelques operations basiques avec la lecture et l'ecriture des fichiers et font des recherches
sur des fichiers
->Et les requirements (conditions) pour ce script sont decrits dans l'assignment document
->On va juste prendre des arguments d'execution pour le chemin vers un repertoire dans le file system et un text string.
->Ces arguments vont etre trouvees dans les fichiers dans le repertoire de file system.
->On a besoin de to exit avec the return value one error et imprimer les declaration si n'importe des parametres ci-dessus n'ont ete specifies.
->On devra quitter(exits) avec une valeur 1 erreur retourne et imprime le resultats si filesdir n'est pas represente dans le repertoire du fichier
systeme (file system)
-> On imprime le message "The number of files are X and the number of matching lines are Y" avec X: nbr de fichier et de tous les sous-
repertoires et Y: est le nbr de ligne correspondant aux fichiers respectifs trouves.
->Exemple invocation:
finder.sh /tmp/aesd/assignment1 linux => ie qu'on cherche des contenus dans le repertoire linux avec le chemin ci-dessus et le script Finder.SH
Commentaire: il ya quelques applications qu'on peut utiliser pour avoir l'information et l'afficher a traver mon Finder invocation=> alors il pouvait
etre invoquer
->Next, on doit ecrire un script shell called writer comme finder-app/writer.sh qui a les caracteristiques suivants:
1)- Accepte les arguments suivants:
i)- Le 1er argument est le chemin complet vers un fichier (including filename) sur le fichier systeme(filesystem) et cela va etre repere en bas
comme writefile
ii)- Le 2nd argument est le text string qu'on ecrira a l'interieur de ce fichier, reperee en bas comme writestr
2)-Quitte avec une valeur de retour 1 si error et imprimer le resultat (ou la declaration) si aucun argument ci-dessus ont etes specifies.
3)-Cree un nouveau fichier avec le nom et chemin writefile avec contenu writestr, en ecrasant n'importe quel fichier existant et creeant de chemin s'il
n'existe pas
i)-Quitte avec la valeur de retour et 1 si error, on imprime le statement (ou resultat) is le fichier ne peut pas etre cree.
Exemple:
writer.sh /tmp/aesd/assignment1 /sample.txt ios
=>Ici, On cree un fichier:
/tmp/aesd/assignment1/sample.txt avec contenu "ios"
->Puis, on execute le shell script finder-test-sh fourni avec les repository d'assignment github avec une legere modification indiquee en bas en
jaune .
Ce script:
a)- accepte les arguments suivants:
. le 1er argument est le nombre de fichiers a ecrire numfiles.
. le 2eme argument est la chaine a ecrire pour chaque fichier writestr
b)- Par defaut, on utilise numfiles 10 et writestr "AELD_IS_FUN" si les arguments respectives ne sont pas specifies.
c)- Cree une repertoire vide /tmp/aeld-data
d)-boucle pour creer des fichiers numfiles dans le repertoire /tmp/aeld-data en utilisant le script writer.sh avec writefile, le nom du 1er argument
/tmp/aeld-data/usernameX.txt ouu X est le nombre allant de 1 jusqu'a numfiles, username est le nom d'utilisateur trouvee dans conf/username.txt
and writestr est passee en 2eme argument
e)-Executer le script finder.sh avec filesdir installee dans /tmp/aeld-data et searchstr installee dans writestr
f)-Compare la sortie de script finder avec la sortie attendu "The number of files are numfiles and the number of matching lines are numfiles".
Imprime "success" si ca correspond ou "error" sinon .
->Maintenant, on teste notre implementation en utilisant le script shell finder-test.sh et assure tous les scripts passent.
a-Cela verifie l'implementation des scripts writer.sh et tester.sh passe les exigences.
24/08/22:
-Les executables dans les repertoires inclus dans $PATH sont parfois references en etant "in the path" de current shell.
-Lister touts les processus en marche avec la commande ps (processus status): comme suit:
$ ps
-Le moyen le plus simple d’obtenir plus d’informations sur une commande ou un programme Linux particulier est d’utiliser la commande man suivie de
l’élément sur lequel vous souhaitez obtenir des informations, comme suit:
man <program or command>
LES VARIABLES:
-Lors de la définition d’une variable, nous laissons de côté le signe $, comme suit:
myvariable=Bonjour
-Pour lire la variable, on precede le nom de la variable par "$" .
-Les Autres Variables speciales:
$0 - Nom du script Bash.
$1 - $9 - Les 9 premiers arguments du script Bash. (Comme mentionné ci-dessus.)
$# - Combien d’arguments ont été transmis au script Bash.
$@ - Tous les arguments fournis au script Bash.
$? - L’état de sortie du processus le plus récemment exécuté.
$$ - L’ID de processus du script en cours.
$USER - Nom d’utilisateur de l’utilisateur exécutant le script.
$HOSTNAME - Nom d’hôte de la machine sur laquelle le script s’exécute.
$SECONDS : nombre de secondes écoulées depuis le démarrage du script.
$RANDOM - Renvoie un nombre aléatoire différent chaque fois qu’il est mentionné.
$LINENO - Renvoie le numéro de ligne actuel dans le script Bash.
Si vous tapez la commande env sur la ligne de commande, vous verrez un
LES OPERATEURS:
-eq : Elle renvoie true si les deux nombres sont égaux.
-lt : Elle renvoie true si un nombre est inférieur à un autre nombre.
-gt : Elle renvoie true si un nombre est plus grand qu’un autre nombre.
== : Elle renvoie true si les deux chaînes sont égales.
!: Elle renvoie true si les deux chaînes ne sont pas égales.
! : Il nie l’expression avec laquelle il est utilisé.
-NB: Notons bien que si on tape la commande env sur la CLI, on vera une liste d'autres variables auxquelles on peut egalement nous referer.
-Substitution de commande: nous permet de prendre la sortie d'une commande ou d'un programme (ce qui serait normalement imprime a l'ecran) et
de l'enregistrer comme valeur d'une variable. Pour ce faire, on place entre parenthes, précédé d’un signe $, par exemple:
myvar=$( ls /etc | wc -l )
echo Il y a $myvar entrées dans le répertoire /etc
26/08/22:
YOCTO Project:
Documents(A retenir):
-Le but c'est de s'initier comment configurer un Compilateur (ou Build) pour un hardware specifique.
-On utilise Yocto Project pour generer un reference Embedded OS appele Poky.
-On l'utilise generalement sur une distribution linux native, mais si la machine qui l'utilise pour generer de l'image (Build Host) n'est pas un systeme
linux native, alors on effectue des etapes necessaires en utilisant Cross Platforms (CROPS) et installer le conteneur Poky.
Reclamations:
-Par rapport au subdirectory dans la repository clone vers mon machine , on doit placer dans ce subidrectory : +le fichier texte CMakeLists.txt et +le
fichier code du logiciel
------------------------------------------------------------
30/08/22:
Concernant le script finder-test.sh dans finder-app:
-set -e :arrete l'execution d'un script si une commande ou un pipeline contient une erreur
-set -u : signale l'utilisation de variables non initialisees comme dans le script suivant :
' check_init.sh'
#!/bin/sh
set -u message=hello echo $mesage
-rm -rf :
NB: -L'espace supplementaire dans un env.variable peut entrainer la suppression du repertoire dans le script Bash.
-Les quotes dans "$WRITEDIR" signifie que la chaine entiere dans WRITEDIR est une seule chaine de caractere. Cette issue peut etre resolue en
utilisant un double square brackets as " [[ ]]" au lieu d'utiliser des quotes.
Rq: La variable d'env ou l'on met le chemin vers un repertoire specifique contenant +ieurs espaces, alors il sera considere comme un argument
multiple, comme:
$WRITEDIR="aesd/assignments/..."
31/08/22:
-less mon_fichier : syntaxe a faire pour afficher le contenu d'un fichier texte. Ceci, affiche le fichier texte page par page, pour quitter la lecture on pressera
sur "q"
-file fichier : affiche le type de donnee qu'un fichier contient
17/09/22:
-L’option -exec permet d’exécuter une commande avec le résultat de la sortie find
20/09/22:
-Combinaison de "Ctrl+Alt+T" :ouvre une fenetre de terminal .
23/09/22:
-Retouche effectuee, c'est au niveau de script finder.sh, j'ai effectuee un changement sur le texte a ecrire dans le fichier , et supprimer lorsque un nouveau
nombre de fichier est donnee comme argument pour le script
27/09/22:
INTRODUCTION TO SYSTEM PROGRAMMING
System Programming :
But: Introduce System Programming, Understand APIs and ABIs introduce POSIX .
NAME
fopen, fdopen, freopen -stream open functions
DESCRIPTION
The fopen() function opens the file whose name is the string pointed to by pathname and associates a stream with it.
RETURN VALUE
Upon successful completion fopen(), fdopen() and freopen() return a FILE pointer. Otherwise, NULL is returned and errno is set to indicate the
error.
->Il a une liste de POSIX qui cherche les erreur et une erreur qui a ete trouve par exemple avec la commande file open appele ENOENT = qui veut dire
No such file or directory
->Si on veut essayer de mapper ces 2 nombres d'erreurs specifique qu'on affiche dans la valeur errno
->On peut utiliser errno Daschle et tu peux voir que ENOENT est representee par le nombre 2 dans la ligne.
-> Voici un exemple d'un simple programme qui essaie d'ouvrir un fichier non-existant :
int main() {
const char *filename="non-existing-file.txt";
FILE *file=fopen (filename, "rb");
if (file == NULL )
{
fprintf(stderr, "Value of errno attempting to open file %s: %d\n" , filename, errno ) ;
perror ("perror returned") /* perror: utilisee pour reference les variables errno ex: "No Such File or Directory " mais il existe bcp de valeurs de
errno.
fprintf(stderr, "Error opening file %s: %s\n, filename, strerror(errno)) ; /*fonction strerror prend comme argument la variable errno reference par la
fonction perror
} else {
fclose(file);
}
return 0;
}
-> On a :
PERROR(3) Linux Programmer's Manual
NAME
perror - print a system error message.
DESCRIPTION
Le perror() fonction produit un message sur l'erreur standard decrivant l'erreur passe rencontree durant l'appel system ou la fonction librairie.
Remarques:
-La chose qu'on doit penser sur errno et error handling code est que la valeur de l'errno est modifiable comme un effet secondaire par quelques
fonctions d'API
qu'on appelle.
-errno peut etre changer entre le temps ouu on l'a appelee dans fopen et le temps est actuellement imprimee a traverrs pour perror.
->Comment peut-on fixer les erreurs ?
=> deplacer fpintf apres perror
=> Sauvegarder errno vers la variable locale.
=>GNU Compiler Collection(GCC): Ce sont des compilateurs pour C et d'autres langage qui sont dependant de version de GCC, incluant C++,
Objective-C, Objective-C++, Java, Fortran, Ada and Go. Ils utilisent tous un commun back-end lequel produit un code assembleur qui est envoye vers
GNU assembler. Il est disponible sur http://gcc.gnu.org/
=> C Library: s'agit d'un API standardisee basee sur la specification ou definition de POSIX lequel est l'interface principale entre le systeme
d'exploitation kernel et les applications.
=>Cross: Ce toolchain tourne sur different type de systeme que la cible(target), permettant le developpement d'etre fait sur Un PC bureau rapide et
puis chargee sur la cible(target) embarque pour la phase de test. Et il fonctionne aussi sur une architecture differente de l'hote. La cross compilation est
caracterisee par la separation de host et target.
==>Pourquoi utiliser un cross toolchain?
+Notre Host est probablement plus puissant que le Target, Builds qui est rapide pour construire(build) a partir de la machine d'hote.
+On ne veut pas probablement inclure le development tools dans mon target image.
->Avoir cette compilation croisee configuree a partir de la machine d'hote qu'on a l'option d'utiliser la plupart des ressources d'hote comparee au target.
->Creer un environnement de native build a partir de zero n'est pas facile et integre la creation de cross compiler first pour demarrer
l'environnement de build sur le target et en utilisant cela pour construire(build) packages.
->Sysroot Directories
=>lib directory va etre les objets partages pour C library et il s'agit de contenu qui va etre necessaire a etre installer sur le target(cible).
=>usr/lib directory est pour les librairies statiques, fichiers archives. Ceci est donc utilise dans le cadre des etapes compilees de la librairie C
=>usr/include directory est pour les Headers for librairies(par ex: <stdio.h>). C'est dans cette repertoir que le fichier va etre mapper lorsqu'on fait une
compilation croise
=>usr/(s)bin: c'est la ouu les programmes utiles pour le cross toolchain serait stockees (ou located). De plus, cela ferait partie des etapes de build ou
apres d'analyser la sortie de mon build et si tu as besoin de fonctionner(tourner) host tools qu'on connait la facon d'analyser ARM executables, c'est
laa(usr/bin) que ces fichiers seront situes dans votre sysroot .
->Shared library:
=> permet le partage des objets qui sont liees at runtime, lequel rend plus efficace a utiliser le stockge et la memoire systeme, de plus une copie qui a
besoin d'etre charge.
=> Il rend aussi facilement la mise a jour des fichiers de librairies sans avoir re-link toutes les programmes qui leur utilisent.
=>Le code objet pour shared library doit etre position-independent de sorte que l'editeur de liens d'executions(ou runtime linker) est libre de
localiser dans la memoire au next adresse libre.
=>pour faire une shared library : on ajoute le -fPIC parametre pour gcc, et puis lier(link) en utilisant l'option -shared, comme suit :
$ arm-cortex_a8-linux-gnueabihf-gcc -fPIC -c test1.c
$ arm-cortex_a8-linux-gnueabihf-gcc -fPIC -c test2.c
$ arm-cortex_a8-linux-gnueabihf-gcc -shared -o libtest.so test1.o
test2.o
Directory(ou repertoire): c'est un type special de fichiers , il est l'equivalent de Dossier dans Windows pour maintenir les informations a propos des autres
fichiers .
Cmake: est un systeme de construction logicielle multiplateforme. Il permet de verifier les prerequis necessaires a la construction, de determiner les
dependances entre les #ts composants d'un projet pour planifier une construction ordonnee et adaptee a la plateforme.
Make et Cmake: sont des commandes distribues par un systeme d'exploitation UNIX avec un environnement SHELL
-------------------------------------------------------------