Table des matières:

Orange PI HowTo : Compiler l'outil Sunxi pour Windows sous Windows : 14 étapes (avec images)
Orange PI HowTo : Compiler l'outil Sunxi pour Windows sous Windows : 14 étapes (avec images)

Vidéo: Orange PI HowTo : Compiler l'outil Sunxi pour Windows sous Windows : 14 étapes (avec images)

Vidéo: Orange PI HowTo : Compiler l'outil Sunxi pour Windows sous Windows : 14 étapes (avec images)
Vidéo: Kiosk mode Bruteforce Evasion with Flipper Zero 2024, Novembre
Anonim
Orange PI HowTo: Compiler l'outil Sunxi pour Windows sous Windows
Orange PI HowTo: Compiler l'outil Sunxi pour Windows sous Windows

CONDITIONS PRÉALABLES:

Tu auras besoin de

  1. Un ordinateur (de bureau) exécutant Windows.
  2. Une connexion Internet.
  3. Une carte Orange PI.

Le dernier est facultatif, mais je suis sûr que vous l'avez déjà. Sinon, vous ne lirez pas cette instructable.

Lorsque vous achetez l'ordinateur monocarte Orange PI, il ne reste qu'un morceau de métal mort jusqu'à ce qu'il soit correctement configuré. Et son fichier de configuration principal: "script.bin" est la première clé pour lui donner vie. Ce fichier se trouve dans la partition de démarrage de votre carte SD amorçable. Et heureusement pour nous, dans la plupart des distributions Linux du site officiel (https://www.orangepi.org/downloadresources/) cette partition est FAT32 et peut être facilement vue par n'importe quel ordinateur Windows. Cela simplifie vraiment les choses, car il n'y a toujours pas de moyen fiable d'écrire dans les partitions Linux ext2 à partir de Windows.

Malheureusement pour nous, le fichier de configuration script.bin a un format binaire totalement hostile à l'édition humaine. On a besoin d'une sorte d'outil logiciel pour le décrypter et le crypter après que les modifications nécessaires aient été apportées. Et un tel ensemble d'outils existe. C'est le tristement célèbre SUNXI-TOOLS. Le problème, c'est qu'il est destiné à fonctionner sous Linux et que nous devons soit garder une machine Linux dédiée pour n'utiliser que les outils sunxi, soit trouver un moyen de les compiler pour Windows.

Je pourrais simplement le compiler et partager l'exécutable, mais on ne sait jamais s'ils aimeraient faire une nouvelle version et vous aurez besoin d'une nouvelle compilation dès que possible. J'ai donc décidé de faire un guide sur la façon de compiler l'outil essentiel à partir des sources. Commençons.

Étape 1: Téléchargez les outils Sunxi

Télécharger les outils Sunxi
Télécharger les outils Sunxi
Télécharger les outils Sunxi
Télécharger les outils Sunxi

Obtenez la dernière version (ou nécessaire) du code source sunxi-tools. Accédez à l'URL: https://github.com/linux-sunxi/sunxi-tools/releases et choisissez de télécharger en tant qu'archive zip.

Étape 2: décompressez le code source

Décompressez le code source
Décompressez le code source

Une fois le téléchargement terminé, décompressez le code source dans le dossier de votre choix. (En outre, je supposerai que ce dossier est c:\sunxitools\, remplacez donc ce chemin par le vôtre).

Étape 3: Télécharger le code::blocks

Code de téléchargement::blocks
Code de téléchargement::blocks

Si vous avez une copie installée d'un compilateur c++ opérationnel pour Windows. et si vous savez comment l'utiliser, vous pouvez directement passer à l'étape 3. Les autres devraient avoir un compilateur c++ approprié et un shell (IDE) pour l'utiliser confortablement. Mon choix est code::blocks pour Windows avec la chaîne d'outils MinGW préinstallée. Vous pouvez l'obtenir à partir d'ici:

Téléchargez-le et installez-le.

Étape 4: Testez votre IDE

Testez votre IDE
Testez votre IDE

Pour tester si les choses se passent bien, démarrez les blocs de code, cliquez sur "créer un nouveau projet", choisissez "application console", choisissez c ou c++, tapez le titre du projet de paiement, conservez les valeurs par défaut dans la fenêtre suivante et cliquez sur "terminer ".

Étape 5: Terminer le test

Test complet
Test complet

Cliquez ensuite sur un triangle vert sur le panneau supérieur de l'IDE ou utilisez le point de menu Build->Run. Si les choses se sont bien passées, vous devriez voir un message de votre application "Hello world" générée automatiquement dans la fenêtre noire "DOS".

Sinon, cela signifie que l'IDE et le compilateur ne fonctionnent pas correctement et vous devrez rechercher comment le régler correctement. Vous devrez probablement télécharger une autre version des outils de programmation ou vérifier leurs autorisations dans votre logiciel pare-feu/antivirus.

Étape 6: Créer un nouveau projet

Créer un nouveau projet
Créer un nouveau projet
Créer un nouveau projet
Créer un nouveau projet
Créer un nouveau projet
Créer un nouveau projet
Créer un nouveau projet
Créer un nouveau projet

Maintenant, vous devriez avoir une boîte à outils de programmeur C/C++ opérationnelle et les codes sources sunxi-tools décompressés dans le dossier c:\sunxitools\ sur votre ordinateur. Il est temps de monter un projet. Créez un nouveau projet dans votre IDE. Choisissez le projet simple C (pas c++) de type "application console".

Assurez-vous que vous créez un projet dans le dossier c:\sunxitools\ et non dans un autre endroit. (Les blocs de code par exemple ont tendance à créer un sous-dossier avec le même nom que le projet. Donc, si vous avez nommé votre projet, dites "test" et essayez de le placer dans c:\sunxitools\, vous pouvez vous retrouver avec le projet parti à c:\sunxitools\test\ si vous n'êtes pas assez attentif.) Les outils Sunxi contiennent plusieurs utilitaires, mais pour notre propos nous n'en aurons besoin que d'un: l'utilitaire "fexc".

Étape 7: ajouter des fichiers au projet

Ajouter des fichiers au projet
Ajouter des fichiers au projet

L'utilitaire "fexc" est responsable de la conversion du script.bin au format texte et de la conversion inverse en binaire. Il est essentiel que l'exécutable de cet utilitaire porte le nom "fexc.exe", donc c'est bien si vous avez nommé votre projet comme "fexc". Cependant, vous pouvez utiliser n'importe quel autre nom du projet, car vous pouvez toujours renommer l'exécutable après la compilation, ou vous pouvez choisir "Projet-> Propriétés" dans le menu déroulant du haut et dans la fenêtre qui apparaît, cliquez sur l'onglet "Créer des cibles", et modifiez le champ "Nom du fichier de sortie" pour remplacer le nom de l'exécutable.

À votre projet généré automatiquement, vous ne devez ajouter que cinq fichiers source:

  • fexc.c
  • script.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

et sept fichiers d'en-tête:

  • list.h (déplacez-le du dossier c:\sunxitools\include\ vers le dossier c:\sunxitools)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Assurez-vous d'exclure le fichier main.c généré automatiquement du projet, car fexc.c contient déjà la fonction "int main". (Rappelez-vous que tout programme ne devrait avoir qu'une seule fonction principale ?).

Tous les fichiers de code source nécessaires sont déjà dans le sous-dossier, où vous avez décompressé les codes source. Les fichiers d'en-tête méritent une paire de mots, où les obtenir. "list.h" - se trouve généralement dans le sous-dossier "include" du jeu de codes source décompressé. "version.h" - créez-le simplement vous-même. Mettez-y une chaîne comme:

#définir la VERSION "Win32"

Ensuite, enregistrez et fermez le fichier. (Vous pouvez le décorer avec #define et #ifdef si vous le souhaitez.)

Si vous essayez maintenant de compiler le projet, il se plaindra de nombreuses erreurs et d'un fichier manquant. Les erreurs sont principalement dues à un peu de liberté de style excessive, aux programmeurs sunxi-tools utilisés pour appliquer, et le fichier manquant est la dépendance non incluse dans le pack du code source. Permet de traiter cette étape par étape.

Étape 8: faire en sorte que Gcc suive la norme de langage ISO C 1999

Demandez à Gcc de suivre la norme de langage ISO C 1999
Demandez à Gcc de suivre la norme de langage ISO C 1999

Afin que le compilateur ne se plaigne pas du style de programmation trop libre, définissez le standard "с99" de la compilation. Dans les blocs de code, allez dans le menu "Projet -> Options de construction" et dans "Paramètres du compilateur -> Drapeaux du compilateur", cochez la case "Faire suivre à gcc la norme de langage ISO C 1999". Ou vous pouvez simplement ajouter "-std=c99" dans la chaîne d'options de votre compilateur. Maintenant, si vous essayez de compiler le projet, ces tonnes d'erreurs devraient disparaître et vous êtes un à un avec la dépendance manquante.

Étape 9: Trouvez la dépendance manquante

Trouver la dépendance manquante
Trouver la dépendance manquante

La dépendance manquante est le fichier "mman.h" - l'en-tête d'une sorte de gestionnaire de mémoire Linux. Windows C n'a pas nativement un tel fichier, mais heureusement, il existe un port Windows. Accédez à https://github.com/witwall/mman-win32 pour Windows. Téléchargez l'instantané du référentiel git.

Étape 10: Déballez le Mman

Déballez le Mman
Déballez le Mman

Décompressez les fichiers mman.c et mman.h, placez-les dans le dossier c:\sunxitools\.

Étape 11: et ajoutez-les au projet

Et les ajouter au projet
Et les ajouter au projet

Étape 12: chemin correct

Chemin correct
Chemin correct

Et dans le fichier "fex.c" la ligne de raplece:

#comprendre

à la

#include "mman.h"

À cette étape, votre compilateur ne devrait rien se plaindre et vous obtiendrez la longue attente fexc.exe comme sortie. Ne soyez pas heureux trop tôt. L'utilitaire n'est toujours pas entièrement fonctionnel. Vous pouvez vous en assurer en déchiffrant un fichier script.bin valide dans le formulaire texte - fichier script.fex avec en conséquence le chiffrement du fichier script.fex dans le script.bin. Vous pouvez noter que la taille du script.bin résultant diffère légèrement de la taille du script.bin d'origine. Et si vous essayez de décrypter à nouveau le résultat, cela échouera. Ni l'Orange PI ne fonctionnera avec ce script.bin. Pour obtenir l'utilitaire fonctionnel, nous devons décharger une bombe de code, que quelqu'un a placée dans le code source de sunxi-tools. Ce sera notre prochaine étape.

Étape 13: Exorcisme

Exorcisme
Exorcisme

Afin de décharger la bombe de code, ouvrez le fichier de code fexc.c et trouvez-y une chaîne de texte du contenu suivant:

else if ((out = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {

Remplacez-le simplement par la chaîne suivante:

else if ((out = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 512))<0){

Si ce n'est pas les mauvais chiffres "666" dans la première chaîne, je penserais que le codeur vient d'oublier d'utiliser le drapeau O_BINARY. Mais le nombre de la bête clarifie ses intentions de manière transparente. Allez comprendre, à quel point c'est ingénieux: en raison de la subtile différence dans la façon dont les fichiers sont traités sous Windows et Linux, la bombe n'a aucun effet lorsque l'utilitaire est compilé et utilisé sous Linux. Mais cela gâche tout lorsque l'utilitaire est utilisé sous Windows.

Une fois la bombe désarmée, vous pouvez enfin compiler et utiliser en toute sécurité l'utilitaire fexc sur votre ordinateur de bureau Windows.

Étape 14: REMARQUES

REMARQUES
REMARQUES

1) Pour utiliser l'utilitaire fexc confortablement, vous devriez obtenir deux fichiers batch:

bin2fex.bat - et - fex2bin.bat.

Vous pouvez les obtenir à partir d'une version faily de fexc.exe pour Windows, ou vous pouvez les saisir vous-même:

  • bin2fex.bat doit contenir "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat doit contenir "fexc -O bin -I fex script.fex script.bin"

2) S'il est difficile de trouver le gestionnaire mman pour Windows, vous pouvez éviter son utilisation. Cependant, il faut beaucoup plus d'édition du fichier fexc.c et nécessite au moins une certaine connaissance de c. Pour votre commodité, je partage le code source édité du fexc à partir de sunxi-tools v1.4 sans dépendance à mman.h avec le fichier de projet codeblocks et avec un exemple de script.bin de certains pi orange. Vous pouvez télécharger fexc_nomman.zip

3) Il est possible que dans les versions ultérieures de sunxi-tools, ils ajoutent des dépendances supplémentaires. N'hésitez pas à les trouver sur Internet et à les ajouter à votre projet de compilation.

5) Enfin voici la version précompilée de fexc.exe pour Win32:

fexc_nomman.zip

Si vous êtes assez paresseux, n'hésitez pas à utiliser la ver. Cependant, sachez qu'il ne sera pas mis à jour si/quand les nouvelles versions de SunxiTools/Windows seront disponibles. Il vaut donc mieux apprendre à les compiler que de dépendre d'une version binaire fixe, je présume.

4) Les "Orange PI", "Code::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", etc… sont les marques correspondantes de leurs propriétaires respectifs.

5) Si votre compilateur se plaint de ne pas trouver de fonctions mman, comme:

référence non définie à '_imp_mmap'

sachez que les amateurs de définition de la communauté de développement mman ont oublié que le code peut être compilé non seulement en tant que bibliothèque dll. Il peut également s'agir d'une bibliothèque statique ou d'un code autonome comme celui que nous avons ici. Pour résoudre le problème, modifiez le fichier "mman.h" comme suit:

a) trouvez les chaînes:

#si défini(MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec(dllexport) #else #define MMANSHARED_EXPORT _declspec(dllimport) #endif

b) ajouter la chaîne

#define MMANSHARED_EXPORT

juste en dessous des chaînes trouvées à l'étape précédente

Conseillé: