Cuprins:

Orange PI HowTo: Compilați instrumentul Sunxi pentru Windows sub Windows: 14 pași (cu imagini)
Orange PI HowTo: Compilați instrumentul Sunxi pentru Windows sub Windows: 14 pași (cu imagini)

Video: Orange PI HowTo: Compilați instrumentul Sunxi pentru Windows sub Windows: 14 pași (cu imagini)

Video: Orange PI HowTo: Compilați instrumentul Sunxi pentru Windows sub Windows: 14 pași (cu imagini)
Video: rusEFI orange pi zero+ wifi java setup 2024, Decembrie
Anonim
Orange PI HowTo: Compilați instrumentul Sunxi pentru Windows sub Windows
Orange PI HowTo: Compilați instrumentul Sunxi pentru Windows sub Windows

PRECIZITĂȚI:

Vei avea nevoie

  1. Un computer (desktop) care rulează Windows.
  2. O conexiune la Internet.
  3. O placă Orange PI.

Ultimul este opțional, dar sunt sigur că îl aveți deja. În caz contrar, nu veți citi acest lucru instructiv.

Când cumpărați computerul cu o singură placă Orange PI, acesta rămâne doar o bucată de metal mort până când este configurat corect. Și fișierul său principal de configurare: „script.bin” este prima cheie care îl aduce în viață. Acest fișier se află în partiția de boot a cardului SD bootabil. Și din fericire pentru noi, în majoritatea distribuțiilor Linux de pe site-ul oficial (https://www.orangepi.org/downloadresources/) această partiție este FAT32 și poate fi văzută cu ușurință de orice computer Windows. Simplifică într-adevăr lucrurile, deoarece nu există încă o modalitate fiabilă de a scrie în partițiile Linux ext2 de sub Windows.

Din nefericire pentru noi, fișierul de configurare script.bin are un format binar complet neprietenos pentru editare umană. Este nevoie de un fel de instrument software pentru a-l decripta și a cripta înapoi după ce au fost făcute modificările necesare. Și un astfel de set de instrumente există. Este infam SUNXI-TOOLS. Mersul în unguent este că este destinat să ruleze sub Linux și fie trebuie să păstrăm o mașină Linux dedicată doar pentru a folosi sunxi-tools, fie pentru a găsi o modalitate de a le compila pentru Windows.

Aș putea pur și simplu să-l compilez și să împart executabilul, dar nu se știe niciodată dacă ar dori să facă o nouă versiune și veți avea nevoie de o nouă compilație cât mai curând posibil. Așa că am decis să fac un ghid pentru a compila instrumentul esențial din surse. Să începem.

Pasul 1: Descărcați instrumentele Sunxi

Descărcați Sunxi-tools
Descărcați Sunxi-tools
Descărcați Sunxi-tools
Descărcați Sunxi-tools

Obțineți cea mai recentă (sau necesară) versiune a codului sursă sunxi-tools. Accesați adresa URL: https://github.com/linux-sunxi/sunxi-tools/releases și alegeți să descărcați ca arhivă zip.

Pasul 2: dezarhivați codul sursă

Dezarhivați codul sursă
Dezarhivați codul sursă

Odată ce descărcarea s-a încheiat, dezarhivați codul sursă în dosarul la alegere. (în continuare, voi presupune că acest folder este c: / sunxitools \, deci înlocuiți această cale cu calea proprie).

Pasul 3: Descărcați Codul:: blocuri

Descărcați Cod:: blocuri
Descărcați Cod:: blocuri

Dacă aveți o copie instalată a unui compilator c ++ operațional pentru Windows. și dacă știți cum să îl utilizați, puteți trece direct la pasul 3. Alții ar trebui să obțină un compilator c ++ adecvat și un shell (IDE) pentru al utiliza confortabil. Alegerea mea este code:: blocks pentru Windows, împreună cu lanțul de instrumente MinGW preinstalat. O puteți obține de aici:

Descărcați-l și instalați-l.

Pasul 4: testați IDE-ul

Testați IDE-ul
Testați IDE-ul

Pentru a testa dacă lucrurile merg bine, porniți coduri, faceți clic pe „creați un proiect nou”, alegeți „aplicație consolă”, alegeți c sau c ++, tastați titlul proiectului de verificare, păstrați valorile implicite neatinse în fereastra următoare și faceți clic pe „terminați”.

Pasul 5: Finalizați testul

Test complet
Test complet

Apoi faceți clic pe un triunghi verde pe panoul superior al IDE sau utilizați punctul de meniu Build-> Run. Dacă lucrurile au mers bine, ar trebui să vedeți un mesaj din aplicația dvs. „Hello world” autogenerată în fereastra neagră „DOS”.

Dacă nu, înseamnă că IDE și compilatorul nu funcționează corect și va trebui să investigați cum să o setați corect. Probabil va trebui să descărcați o altă versiune a instrumentelor de programare sau să verificați permisiunile acestora în firewall-ul / software-ul antivirus.

Pasul 6: Creați un proiect nou

Creați un proiect nou
Creați un proiect nou
Creați un proiect nou
Creați un proiect nou
Creați un proiect nou
Creați un proiect nou
Creați un proiect nou
Creați un proiect nou

Acum ar trebui să aveți un set de instrumente de programare C / C ++ operațional și codurile sursă sunxi-tools neambalate în folderul c: / sunxitools / de pe computer. Este timpul să asamblați un proiect. Creați un proiect nou în IDE-ul dvs. Alegeți proiectul simplu C (nu c ++) de tipul „aplicației consolă”.

Asigurați-vă că creați proiectul în folderul c: / sunxitools / și nu în alt loc. (Blocurile de cod EG tind să creeze un subfolder cu același nume ca și proiectul. Deci, dacă ați numit proiectul dvs., spuneți „testați” și încercați să-l plasați în c: / sunxitools \, puteți termina cu proiectul plecat la c: / sunxitools / test / dacă nu sunteți suficient de atent.) Sunxi-tools conține mai multe utilități, dar pentru scopul nostru vom avea nevoie doar de unul: așa-numitul utilitar „fexc”.

Pasul 7: Adăugați fișiere la proiect

Adăugați fișiere la proiect
Adăugați fișiere la proiect

Exact utilitarul „fexc” este responsabil pentru conversia script.bin în format text și pentru conversia din spate în binar. Este esențial ca executabilul acestui utilitar să aibă numele „fexc.exe”, deci este bine dacă ați numit proiectul dvs. „fexc”. Cu toate acestea, puteți utiliza orice alt nume al proiectului, deoarece puteți redenumi întotdeauna executabilul după compilare sau puteți alege „Proiect-> Proprietăți” din meniul derulant de sus și în fereastra care apare faceți clic pe fila „Construiți ținte”, și editați câmpul „Numele fișierului de ieșire” acolo pentru a înlocui numele executabilului.

La proiectul dvs. autogenerat ar trebui să adăugați doar cinci fișiere sursă:

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

și șapte fișiere antet:

  • list.h (mutați-l din formularul c: / sunxitools / include / folder în folderul c: / sunxitools)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Asigurați-vă că excludeți main.c autogenerat din proiect, deoarece fexc.c are deja funcția "int main". (Amintiți-vă că orice program ar trebui să aibă o singură funcție principală?).

Toate fișierele de cod sursă necesare sunt deja în subfolder, unde ați despachetat codurile sursă. Fișierele antet merită o pereche de cuvinte, de unde să le obțineți. „list.h” - este de obicei în subfolderul „include” al setului de coduri surse neambalate. „version.h” - creați-l singur. Puneți acolo un șir de genul:

#define VERSIUNEA "Win32"

Apoi salvați și închideți fișierul. (Puteți să-l decorați cu # define's și # ifdef's dacă doriți.)

Dacă acum încercați să compilați proiectul, acesta se va plânge de multe erori și un fișier lipsă. Erorile se datorează în mare parte un pic de libertate excesivă a stilului, programatorilor sunxi-tools li se aplicau, iar fișierul lipsă este dependența care nu este inclusă în pachetul codului sursă. Să ne ocupăm de acest pas cu pas.

Pasul 8: Solicitați Gcc să respecte standardul de limbă ISO C din 1999

Solicitați Gcc să respecte standardul de limbă ISO C din 1999
Solicitați Gcc să respecte standardul de limbă ISO C din 1999

Pentru ca compilatorul să nu se plângă de stilul de programare prea liber, setați standardul „с99” al compilației. În blocuri de cod, accesați meniul „Proiect -> Opțiuni de construcție” și în „Setări compilator -> Semnalizatoare compilator” bifați caseta de selectare „Să aibă gcc să respecte standardul de limbă ISO C 1999”. Sau puteți doar să adăugați „-std = c99” în șirul de opțiuni al compilatorului dvs. Acum, dacă încercați să compilați proiectul, ar trebui să înceapă acele tone de erori și sunteți unul la unu cu lipsa dependenței.

Pasul 9: Găsiți dependența care lipsește

Găsiți lipsa dependenței
Găsiți lipsa dependenței

Dependența lipsă este fișierul „mman.h” - antetul unui fel de manager de memorie Linux. Windows C nu are în mod nativ un astfel de fișier, dar din fericire există un port Windows al acestuia. Accesați https://github.com/witwall/mman-win32 pentru Windows. Descărcați instantaneul depozitului git.

Pasul 10: Despachetați Mman

Despachetați Mman-ul
Despachetați Mman-ul

Despachetați fișierele mman.c și mman.h, plasați-le în folderul c: / sunxitools \.

Pasul 11: Și adăugați-le la proiect

Și adăugați-le la proiect
Și adăugați-le la proiect

Pasul 12: Calea corectă

Calea corectă
Calea corectă

Și în fișierul "fex.c" linia raplece:

#include

la

#include "mman.h"

În acest pas, compilatorul dvs. nu ar trebui să se plângă de nimic și veți obține lunga așteptare fexc.exe ca ieșire. Nu fi fericit prea devreme. Utilitatea încă nu este pe deplin funcțională. Puteți asigura acest lucru decriptând un fișier script.bin valid în formularul text - fișier script.fex, cu criptarea corespunzătoare a fișierului script.fex înapoi în script.bin. Puteți observa că dimensiunea script-ului rezultat diferă ușor de dimensiunea script-ului original.bin. Și dacă încercați să decriptați din nou rezultatul, acesta va eșua. Nici Orange PI nu va funcționa cu acest script.bin. Pentru a obține utilitatea funcțională, trebuie să descărcăm o bombă de cod, pe care cineva a pus-o în codul sursă sunxi-tools. Va fi următorul nostru pas.

Pasul 13: Exorcism

Exorcism
Exorcism

Pentru a descărca codul bomba, deschideți fișierul de cod fexc.c și găsiți acolo un șir de text al conținutului următor:

else if ((out = deschis (nume de fișier, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Doar înlocuiți-l cu următorul șir:

else if ((out = open (nume de fișier, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Dacă nu cifrele malefice „666” din primul șir, aș crede că codificatorul tocmai a uitat să folosească steagul O_BINARY. Dar Numărul fiarei își clarifică intențiile în mod transparent. Gândiți-vă, cât de ingenios este: datorită diferenței subtile în modul în care fișierele sunt procesate în Windows și Linux, bomba nu are efect atunci când utilitarul este compilat și utilizat sub Linux. Dar distruge totul atunci când utilitarul este utilizat sub Windows.

După ce bomba a fost dezarmată, puteți compila și utiliza în siguranță utilitarul fexc de pe computerul dvs. Windows.

Pasul 14: NOTE

NOTE
NOTE

1) Pentru a utiliza confortabil utilitarul fexc, ar trebui să primiți două fișiere batch:

bin2fex.bat - și - fex2bin.bat.

Puteți să le obțineți dintr-o construcție fexc.exe nereușită pentru Windows sau puteți să le tastați:

  • bin2fex.bat ar trebui să conțină „fexc -I bin -O fex script.bin script.fex”
  • fex2bin.bat ar trebui să conțină „fexc -O bin -I fex script.fex script.bin”

2) Dacă este dificil să găsiți managerul mman pentru Windows, puteți evita utilizarea acestuia. Cu toate acestea, este nevoie de mult mai multă editare a fișierului fexc.c și necesită cel puțin unele cunoștințe despre c. Pentru convingerea dvs., vă împărtășesc codul sursă editat al fexc din sunxi-tools v1.4, gratuit din dependența de la mman.h, împreună cu fișierul de proiect codeblocks și cu exemplul script.bin din unele pi portocalii. Puteți descărca fexc_nomman.zip

3) Este posibil ca în versiunile consecvente ale sunxi-tools să adauge câteva dependențe. Simțiți-vă liber să le găsiți pe internet și să le adăugați la proiectul dvs. de compilare.

5) În cele din urmă, iată versiunea precompilată a fexc.exe pentru Win32:

fexc_nomman.zip

Dacă sunteți suficient de leneși, nu ezitați să folosiți ver. Cu toate acestea, aveți grijă că nu va fi actualizat dacă / când vor fi disponibile versiunile mai noi de SunxiTools / Windows. Deci, este mai bine să învățăm cum să le compilăm decât să depindem de o construcție binară fixă, presupun.

4) „Orange PI”, „Code:: Blocks”, „Windows”, „Linux”, „Sunxi-Tools”, „Allwinner”, etc … sunt mărci comerciale corespondente ale proprietarilor respectivi.

5) Dacă compilatorul se plânge că nu găsește funcții mman, cum ar fi:

referință nedefinită la „_imp_mmap”

fiți conștienți că definiți iubitorii comunității de dezvoltare mman au uitat că codul poate fi compilat nu numai ca bibliotecă dll. Poate fi, de asemenea, o bibliotecă statică sau un cod independent, așa cum avem noi aici. Pentru a remedia problema, editați fișierul „mman.h” după cum urmează:

a) găsiți șirurile:

#if definit (MMAN_LIBRARY)

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

b) adăugați șirul

#define MMANSHARED_EXPORT

chiar sub șirurile găsite la pasul anterior

Recomandat: