Compilation de MicMac sur ARM (RaspBerryPi) : Différence entre versions

De MicMac
Aller à : navigation, rechercher
Ligne 15 : Ligne 15 :
 
L'option ''upgrade'' met à jour tous les paquets installés sur le système vers les dernières versions (couramment utilisé).
 
L'option ''upgrade'' met à jour tous les paquets installés sur le système vers les dernières versions (couramment utilisé).
  
<pre> sudo apt-get install x11proto-core-dev make cmake libx11-dev git-all subversion imagemagick gcc g++ exiv2 libimage-exiftool-perl libgeo-proj4-perl mesa-common-dev libgl1-mesa-dev libglapi-mesa libglu1-mesa qt5-default </pre>
+
<pre> sudo apt-get install x11proto-core-dev make cmake libx11-dev mercurial git git-all subversion imagemagick gcc g++ exiv2 libimage-exiftool-perl libgeo-proj4-perl mesa-common-dev libgl1-mesa-dev libglapi-mesa libglu1-mesa qt5-default </pre>
  
 
[[Remarque :]] l'installation de ''Git'' vient remplacer celle de ''Mercurial''. En effet, ''Git'' est de loin le plus rapide des systèmes de gestion de versions existants et les dépôts ''Git'' sont particulièrement compacts. Il se distingue notamment par sa rapidité et sa gestion des branches qui permettent de développer en parallèle de nouvelles fonctionnalités.
 
[[Remarque :]] l'installation de ''Git'' vient remplacer celle de ''Mercurial''. En effet, ''Git'' est de loin le plus rapide des systèmes de gestion de versions existants et les dépôts ''Git'' sont particulièrement compacts. Il se distingue notamment par sa rapidité et sa gestion des branches qui permettent de développer en parallèle de nouvelles fonctionnalités.
Ligne 47 : Ligne 47 :
 
cd build
 
cd build
 
</pre>
 
</pre>
[[Remarque :]] vous devez mettre toutes les options de ''cmake'' en OFF, seule l'option ''HEADER_PRECOMP'' reste sur ON, puis configurez (''c'') et générez (''g'').
 
  
  
 
Ensuite, vous devez générer le makefile avec les bonnes options. Pour générer le makefile défaut, exécutez ce qui suit :
 
Ensuite, vous devez générer le makefile avec les bonnes options. Pour générer le makefile défaut, exécutez ce qui suit :
  
<pre> cmake ../ </pre>
+
<pre> sudo cmake ../ </pre>
 +
<pre> sudo ccmake ../ </pre>
  
[[Remarque :]] A partir de là, entrez dans ''culture3d/CodeExterne/siftpp/'' afin de modifier le fichier makefile et d'y ajouter la ligne ''Linux_armv71_ARCH    : =glx''. De la même manière, vous allez modifier le fichier ''sift_driver.cpp'' et ajouter la ligne ''include<cstdint>''. En effet, le fichier Makefile tente de configurer automatiquement quelques paramètres. Si cela échoue, il renvoie une erreur. Ainsi, les commandes précédentes permettront au programme d'être exécuté en modifiant le Makefile.
+
[[Remarque :]] Maintenant que vous êtes dans les configurations de cmake, mettez toutes les options de ''cmake'' en OFF, seule l'option ''WITH_HEADER_PRECOMP'' reste sur ON, puis configurez (''c'') et générez (''g'').
 +
 
 +
[[Remarque :]] A partir de là, entrez dans ''culture3d/CodeExterne/Siftpp/'' afin de modifier le fichier Makefile et d'y ajouter la ligne ''Linux_armv71_ARCH    : =glx''. De la même manière, vous allez modifier le fichier ''sift_driver.cpp'' et ajouter la ligne ''#include<cstdint>''. En effet, le fichier Makefile tente de configurer automatiquement quelques paramètres. Si cela échoue, il renvoie une erreur. Ainsi, les commandes précédentes permettront au programme d'être exécuté en modifiant le Makefile. Pour cela, c'est la commande ''vi '' qui va vous permettre de modifier à votre guise le fichier au sein même du terminal.
 +
 
 +
 
 +
== Présentation de la commande ''vi'' ==
 +
[[jf:vi|vi]] offre deux [[jf:mode|mode]]s de fonctionnement: le [[jf:mode|mode]] ''commande'' et le mode ''insertion''.
 +
 
 +
Au démarrage il est en mode commande, qui permet de déplacer le curseur, de parcourir le document et de [[jf:copier-coller|copier-coller]]. On le quitte, en entrant du même coup en mode insertion, en utilisant une commande d'insertion ou de modification.
 +
 
 +
En mode insertion il est possible de [[jf:saisir|saisir]] du texte. Appuyer sur la touche [[jf:Esc|<nowiki>[</nowiki>ESC<nowiki>]</nowiki>]] pour revenir en mode commande.
 +
 
 +
De nombreuses commandes peuvent être préfixées du nombre de répétitions souhaitées, par exemple ''5w'' avance le curseur de 5 mots (''w''ords).
 +
 
 +
== Commandes et [[jf:combinaison de touches|combinaisons de touches]] ==
 +
 
 +
Saisir les combinaisons proposées ci-après telles quelles, seuls les éléments en ''italique'' y sont à interpréter. La première combinaison proposée, par exemple, est ''':w''' donc implique de taper sur la touche ':' puis sur la touche 'w'. La combinaison « [CTRL]x » implique quant à elle de maintenir la touche [[jf:Ctrl|Ctrl]] enfoncée tout en appuyant sur la touche 'x', puis de les relâcher.
 +
 
 +
Pour [[jf:lancer|lancer]] vi en lui demandant de charger (ouvrir) un fichier: '''vi ''nom_du_fichier'''''
 +
 
 +
= Sauvegarder un fichier - quitter vi =
 +
 
 +
;<nowiki>:w</nowiki>:[[jf:sauvegarder|sauvegarde]] le contenu du fichier (l'enregistrer), penser à '''w'''rite
 +
;<nowiki>:x</nowiki>:sauvegarde puis quitte vi (e'''x'''it)
 +
;<nowiki>:wq</nowiki>:sauvegarde puis quitte ('''w'''rite and '''q'''uit)
 +
;ZZ:sauvegarde si nécessaire puis quitte
 +
;<nowiki>:q</nowiki>:quitte vi sans sauvegarder les modifications (''q''uit)
 +
;<nowiki>:e!</nowiki>:ignore les modifications et recharge le fichier (le point d'exclamation marque l'impératif)
 +
;<nowiki>:q!</nowiki>:quitte immédiatement, sans rien faire d'autre (donc sans sauvergarder ni demande de confirmation)
 +
;<nowiki>:w</nowiki> ''nom_de_fichier'':sauvegarde le fichier sous le nom ''nom_de_fichier''
 +
;<nowiki>:w!</nowiki> ''nom_de_fichier'':remplace le contenu du fichier ''nom_de_fichier''
 +
 
 +
= Se déplacer dans le document édité =
 +
 
 +
;[CTRL]f:descend d'une page (''f''orward, en avant)
 +
;[CTRL]b:remonte d'une page (''b''ack, en arrière)
 +
;[CTRL]d:descend d'1/2 page
 +
;[CTRL]u:remonte d'1/2 page
 +
;<nowiki>:</nowiki>''X'':va à la ligne numérotée ''X'' (''X'' est un entier)
 +
 
 +
= Déplacer le curseur =
 +
 
 +
;H:en haut de l'écran
 +
;M:au milieu de l'écran
 +
;L:en bas de l'écran (''l''ower, au plus bas)
 +
;h:décale d'un caractère à gauche
 +
;j:descend d'une ligne
 +
;k:monte d'une ligne
 +
;l:décale d'un caractère à droite
 +
;0:au début de la ligne
 +
;$:à la fin de la ligne ('$', dans un [[jf:motif|motif]] de [[jf:regexp|regexp]], désigne la fin d'une ligne)
 +
;w:au début du mot suivant (''w''ord, mot)
 +
;e:à la fin du mot suivant (''e''nd, fin)
 +
;b:recule d'un mot (''b''ack, retour)
 +
;{:recule jusqu'au paragraphe suivant
 +
;}:avance jusqu'au paragraphe précédent
 +
;(:recule jusqu'à la phrase suivante
 +
;):avance jusqu'à la phrase précédente
 +
 
 +
= Insérer du texte =
 +
 
 +
;i:active le mode insertion
 +
;a:active le mode insertion, un caractère après le curseur (''a''ppend, ajouter)
 +
;I:insère au début de la ligne
 +
;A:insère à la fin de la ligne
 +
;O:insère une ligne au-dessus du curseur et passe en mode insertion (''o''pen, ouvrir)
 +
;o:insère une ligne en dessous du curseur et passe en mode insertion
 +
;[[jf:Esc|<nowiki>[</nowiki>ESC<nowiki>]</nowiki>]]:Quitte le mode insertion, revient en mode commande
 +
 
 +
= Remplacer du texte =
 +
 
 +
;r''x'':remplace le caractère à la position du curseur par ''x'' (''x'' remplace ici n'importe quel caractère)
 +
;R:remplace, avec ce qui sera saisi ([ESC] pour terminer)
 +
;cw:remplace uniquement le mot à la position du curseur (''w''ord, mot) ([ESC] pour terminer)
 +
;c''n''w:remplace ''n'' mots ([ESC] pour terminer)
 +
;C:remplace la ligne ([ESC] pour terminer)
 +
 
 +
= Supprimer du texte =
 +
 
 +
;x:supprime un caractère (« faire une croix dessus »)
 +
;dw:supprime un mot (''d''elete, détruire)
 +
;d''n''w:supprime ''n'' mots
 +
;dd:supprime une ligne
 +
;''n''dd:supprime ''n'' lignes
 +
 
 +
= [[jf:copier-coller|Copier-coller]] =
 +
 
 +
;Y:[[jf:copier|copie]] une ligne, donc la place dans un [[jf:tampon|tampon]], pour pouvoir ensuite la [[jf:coller|coller]] (''y''ank, tirer)
 +
;''n''Y:copie ''n'' lignes
 +
;P:colle les lignes avant le curseur (''p''aste, [[jf:coller|coller]])
 +
;p:colle les lignes après le curseur
 +
 
 +
= Annuler ou répéter des modifications =
 +
 
 +
;u:annule la dernière modification (''u''ndo, défaire)
 +
;U:annule toutes les modifications effectuées sur la ligne courante
 +
;.:(un point) répète les dernières modifications
 +
 
 +
= Copier-coller de texte dans un fichier =
 +
 
 +
;ma:marque la position "a" dans le fichier
 +
;mb:marque la position "b" dans le fichier
 +
;<nowiki>:'a,'b</nowiki> ''nom_de_fichier'':copie  dans le fichier nommé ''nom_de_fichier'' le texte situé entre la position "a" et la position "b"
 +
 
 +
= Insertion du contenu d'un autre fichier =
 +
 
 +
;<nowiki>:r</nowiki> ''nom_de_fichier'':insère tout le contenu du fichier nommé ''nom_de_fichier'' (''r''ead, lire)
 +
 
 +
= Rechercher et remplacer =
 +
 
 +
;/[[jf:motif|''motif'']]:recherche ''[[jf:motif|''motif'']]'' en allant vers la fin du document
 +
;?''motif'':recherche ''motif''  en allant vers le début du document
 +
;n:répète la dernière recherche (''n''ext, suivant)
 +
;N:retourne au résultat de la précédente recherche effectuée
 +
;//[RET]:répète la dernière recherche
 +
;<nowiki>:</nowiki>''x'',''y'' s/''motif''/''motif2''/g:recherche  le ''motif'', en allant de la ligne numérotée ''x'' à la ligne ''y'', et le remplace par ''motif2''
 +
;<nowiki>:</nowiki>g/''motif''/s//''motif2''/g:recherche dans tous les fichiers le ''motif'' et la remplace par ''motif2'' (''g''lobal)
 +
;<nowiki>:</nowiki>g/''motif''/s//''motif2''/gc:idem, mais demande une confirmation avant de remplacer
 +
 
 +
= Rafraîchir l'affichage =
 +
 
 +
C'était très utile avec les anciens [[jf:terminal|terminaux]] et les liaisons réseau erratiques provoquant des problèmes d'affichage. Cela ne l'est guère plus.
 +
 
 +
;[CTRL]l:(control-L) rafraîchit l'affichage
 +
;%[RET]:rafraîchit l'affichage et place le curseur en haut
 +
;%:rafraîchit l'affichage et place le curseur au milieu
 +
;%-:rafraîchit l'affichage et place le curseur en bas
  
 
Maintenant, nous pouvons enfin construire les sources en lançant les dernières commandes suivantes :  
 
Maintenant, nous pouvons enfin construire les sources en lançant les dernières commandes suivantes :  

Version du 7 décembre 2016 à 13:58

Cette page est exclusivement consacrée à la compilation du logiciel de l'IGN MicMac sur des processeurs ARM tels que les RaspBerryPi. Cette page présente ainsi les différentes étapes de compilation.

Les librairies

Dans un premier temps, nous allons installer toutes les librairies indispensables à l'installation. Pour cela, il suffit d'écrire les différentes commandes qui suivent dans un terminal :

 sudo apt-get update 

L'option update met à jour la liste des fichiers disponibles de configuration /etc/apt/sources.list. L'exécuter régulièrement est une bonne pratique, afin de maintenir à jour votre liste de paquets disponibles.

NB : la commande apt-get est un outil logiciel à utiliser en ligne de commande. Il permet d'effectuer l'installation et la désinstallation de paquets.

 sudo apt-get upgrade 

L'option upgrade met à jour tous les paquets installés sur le système vers les dernières versions (couramment utilisé).

 sudo apt-get install x11proto-core-dev make cmake libx11-dev mercurial git git-all subversion imagemagick gcc g++ exiv2 libimage-exiftool-perl libgeo-proj4-perl mesa-common-dev libgl1-mesa-dev libglapi-mesa libglu1-mesa qt5-default 

Remarque : l'installation de Git vient remplacer celle de Mercurial. En effet, Git est de loin le plus rapide des systèmes de gestion de versions existants et les dépôts Git sont particulièrement compacts. Il se distingue notamment par sa rapidité et sa gestion des branches qui permettent de développer en parallèle de nouvelles fonctionnalités.

 sudo apt-get install x11proto-resource-dev cmake-curses-gui extra-cmake-modules libx11-6-dbg hgsubversion libimage-magick-perl 


Téléchargement de MicMac

Pour télécharger MicMac correctement, rendez-vous dans le répertoire d'installation, où vous souhaitez installer MicMac puis lancez le. Pour cela :

 git clone https://geoportail.forge.ign.fr/culture3d/grit.git 

Rentrez le login et le mot de passe suivants :

 login: culture3d 
 pswd: culture3d 

Ne vous inquiétez pas, le téléchargement peut prendre plusieurs minutes !

Logiciel de compilation

À partir du répertoire d'installation, accédez au répertoire 'culture3d':

 cd culture3d 

Ensuite, vous devez créer un répertoire de construction et y aller:

mkdir build
cd build


Ensuite, vous devez générer le makefile avec les bonnes options. Pour générer le makefile défaut, exécutez ce qui suit :

 sudo cmake ../ 
 sudo ccmake ../ 

Remarque : Maintenant que vous êtes dans les configurations de cmake, mettez toutes les options de cmake en OFF, seule l'option WITH_HEADER_PRECOMP reste sur ON, puis configurez (c) et générez (g).

Remarque : A partir de là, entrez dans culture3d/CodeExterne/Siftpp/ afin de modifier le fichier Makefile et d'y ajouter la ligne Linux_armv71_ARCH  : =glx. De la même manière, vous allez modifier le fichier sift_driver.cpp et ajouter la ligne #include<cstdint>. En effet, le fichier Makefile tente de configurer automatiquement quelques paramètres. Si cela échoue, il renvoie une erreur. Ainsi, les commandes précédentes permettront au programme d'être exécuté en modifiant le Makefile. Pour cela, c'est la commande vi qui va vous permettre de modifier à votre guise le fichier au sein même du terminal.


Présentation de la commande vi

vi offre deux modes de fonctionnement: le mode commande et le mode insertion.

Au démarrage il est en mode commande, qui permet de déplacer le curseur, de parcourir le document et de copier-coller. On le quitte, en entrant du même coup en mode insertion, en utilisant une commande d'insertion ou de modification.

En mode insertion il est possible de saisir du texte. Appuyer sur la touche [ESC] pour revenir en mode commande.

De nombreuses commandes peuvent être préfixées du nombre de répétitions souhaitées, par exemple 5w avance le curseur de 5 mots (words).

Commandes et combinaisons de touches

Saisir les combinaisons proposées ci-après telles quelles, seuls les éléments en italique y sont à interpréter. La première combinaison proposée, par exemple, est :w donc implique de taper sur la touche ':' puis sur la touche 'w'. La combinaison « [CTRL]x » implique quant à elle de maintenir la touche Ctrl enfoncée tout en appuyant sur la touche 'x', puis de les relâcher.

Pour lancer vi en lui demandant de charger (ouvrir) un fichier: vi nom_du_fichier

Sauvegarder un fichier - quitter vi

:w
sauvegarde le contenu du fichier (l'enregistrer), penser à write
:x
sauvegarde puis quitte vi (exit)
:wq
sauvegarde puis quitte (write and quit)
ZZ
sauvegarde si nécessaire puis quitte
:q
quitte vi sans sauvegarder les modifications (quit)
:e!
ignore les modifications et recharge le fichier (le point d'exclamation marque l'impératif)
:q!
quitte immédiatement, sans rien faire d'autre (donc sans sauvergarder ni demande de confirmation)
:w nom_de_fichier
sauvegarde le fichier sous le nom nom_de_fichier
:w! nom_de_fichier
remplace le contenu du fichier nom_de_fichier

Se déplacer dans le document édité

[CTRL]f
descend d'une page (forward, en avant)
[CTRL]b
remonte d'une page (back, en arrière)
[CTRL]d
descend d'1/2 page
[CTRL]u
remonte d'1/2 page
:X
va à la ligne numérotée X (X est un entier)

Déplacer le curseur

H
en haut de l'écran
M
au milieu de l'écran
L
en bas de l'écran (lower, au plus bas)
h
décale d'un caractère à gauche
j
descend d'une ligne
k
monte d'une ligne
l
décale d'un caractère à droite
0
au début de la ligne
$
à la fin de la ligne ('$', dans un motif de regexp, désigne la fin d'une ligne)
w
au début du mot suivant (word, mot)
e
à la fin du mot suivant (end, fin)
b
recule d'un mot (back, retour)
{
recule jusqu'au paragraphe suivant
}
avance jusqu'au paragraphe précédent
(
recule jusqu'à la phrase suivante
)
avance jusqu'à la phrase précédente

Insérer du texte

i
active le mode insertion
a
active le mode insertion, un caractère après le curseur (append, ajouter)
I
insère au début de la ligne
A
insère à la fin de la ligne
O
insère une ligne au-dessus du curseur et passe en mode insertion (open, ouvrir)
o
insère une ligne en dessous du curseur et passe en mode insertion
[ESC]
Quitte le mode insertion, revient en mode commande

Remplacer du texte

rx
remplace le caractère à la position du curseur par x (x remplace ici n'importe quel caractère)
R
remplace, avec ce qui sera saisi ([ESC] pour terminer)
cw
remplace uniquement le mot à la position du curseur (word, mot) ([ESC] pour terminer)
cnw
remplace n mots ([ESC] pour terminer)
C
remplace la ligne ([ESC] pour terminer)

Supprimer du texte

x
supprime un caractère (« faire une croix dessus »)
dw
supprime un mot (delete, détruire)
dnw
supprime n mots
dd
supprime une ligne
ndd
supprime n lignes

Copier-coller

Y
copie une ligne, donc la place dans un tampon, pour pouvoir ensuite la coller (yank, tirer)
nY
copie n lignes
P
colle les lignes avant le curseur (paste, coller)
p
colle les lignes après le curseur

Annuler ou répéter des modifications

u
annule la dernière modification (undo, défaire)
U
annule toutes les modifications effectuées sur la ligne courante
.
(un point) répète les dernières modifications

Copier-coller de texte dans un fichier

ma
marque la position "a" dans le fichier
mb
marque la position "b" dans le fichier
:'a,'b nom_de_fichier
copie dans le fichier nommé nom_de_fichier le texte situé entre la position "a" et la position "b"

Insertion du contenu d'un autre fichier

:r nom_de_fichier
insère tout le contenu du fichier nommé nom_de_fichier (read, lire)

Rechercher et remplacer

/motif
recherche motif en allant vers la fin du document
?motif
recherche motif en allant vers le début du document
n
répète la dernière recherche (next, suivant)
N
retourne au résultat de la précédente recherche effectuée
//[RET]
répète la dernière recherche
:x,y s/motif/motif2/g
recherche le motif, en allant de la ligne numérotée x à la ligne y, et le remplace par motif2
:g/motif/s//motif2/g
recherche dans tous les fichiers le motif et la remplace par motif2 (global)
:g/motif/s//motif2/gc
idem, mais demande une confirmation avant de remplacer

Rafraîchir l'affichage

C'était très utile avec les anciens terminaux et les liaisons réseau erratiques provoquant des problèmes d'affichage. Cela ne l'est guère plus.

[CTRL]l
(control-L) rafraîchit l'affichage
%[RET]
rafraîchit l'affichage et place le curseur en haut
%
rafraîchit l'affichage et place le curseur au milieu
%-
rafraîchit l'affichage et place le curseur en bas

Maintenant, nous pouvons enfin construire les sources en lançant les dernières commandes suivantes :

 sudo make -j$NBRP 
où NBRP correspond au nombre de processeurs sur votre ARM (si vous n'êtes pas sûr de combien de cœurs vous avez, il suffit d'écrire un grand nombre et tous les noyaux seront utilisés) :
 NBRP=$(cat /proc/cpuinfo | grep processor | wc -l)

Pour le lancement de la compilation, il ne vous reste plus qu'à écrire une dernière commande :

 sudo make install 

Ajouter MicMac au chemin

Nous devons maintenant éditer le fichier contenant le chemin environnement qui se trouve dans /etc/culture3d/bin. Ouvrez un terminal et tapez:

  ~/.bashrc 

Remarque : les fichiers dans "/ etc /" doivent être ouverts en tant qu'administrateur uniquement. Pour cela, ajoutez les lignes suivantes au bas du fichier:

  export PATH=$PATH:~/culture3d/bin 

MicMac devrait maintenant être installé dans votre dépôt personnel.


Pour vérifier si MicMac est bien installé sur votre ARM, vous pouvez taper dans un terminal:

 mm3d