Turinys:

„Orange PI HowTo“: sukompiliuokite „Sunxi“įrankį „Windows“sistemoje „Windows“: 14 žingsnių (su paveikslėliais)
„Orange PI HowTo“: sukompiliuokite „Sunxi“įrankį „Windows“sistemoje „Windows“: 14 žingsnių (su paveikslėliais)

Video: „Orange PI HowTo“: sukompiliuokite „Sunxi“įrankį „Windows“sistemoje „Windows“: 14 žingsnių (su paveikslėliais)

Video: „Orange PI HowTo“: sukompiliuokite „Sunxi“įrankį „Windows“sistemoje „Windows“: 14 žingsnių (su paveikslėliais)
Video: Equipment corner - Marlin Build Issue(s) 2024, Gruodis
Anonim
„Orange PI HowTo“: sudarykite „Sunxi“įrankį, skirtą „Windows“sistemoje „Windows“
„Orange PI HowTo“: sudarykite „Sunxi“įrankį, skirtą „Windows“sistemoje „Windows“

PRIEMONĖS:

Jums reikės

  1. (Stalinis) kompiuteris, kuriame veikia „Windows“.
  2. Interneto ryšys.
  3. Oranžinė PI plokštė.

Paskutinis yra neprivalomas, bet esu tikras, kad jūs jau turite. Priešingu atveju šios instrukcijos neskaitysite.

Perkant „Orange PI“vienos plokštės kompiuterį, jis lieka tik negyvo metalo gabalas, kol tinkamai sukonfigūruotas. Ir jo pagrindinis konfigūracijos failas: „script.bin“yra pirmasis raktas, leidžiantis jį atgaivinti. Šis failas yra įkrovos SD kortelės įkrovos skaidinyje. Laimei, daugelyje „Linux“platinimų iš oficialios svetainės (https://www.orangepi.org/downloadresources/) šis skaidinys yra FAT32 ir gali būti lengvai matomas bet kuriame „Windows“kompiuteryje. Tai tikrai supaprastina dalykus, nes vis dar nėra patikimo būdo įrašyti į „Linux ext2“skaidinius iš „Windows“.

Mums nepasisekė, kad „script.bin“konfigūracijos failo dvejetainis formatas yra visiškai nedraugiškas žmonių redagavimui. Norint iššifruoti ir sušifruoti atgal po būtinų pakeitimų, reikia tam tikros programinės įrangos. Ir toks įrankių rinkinys egzistuoja. Tai liūdnai pagarsėję SUNXI-TOOLS. Labai paprasta, kad jis skirtas veikti naudojant „Linux“, ir mes arba turime turėti tam skirtą „Linux“mašiną, kad galėtume naudoti tik „sunxi“įrankius, arba rasti būdą, kaip juos surinkti „Windows“.

Galėčiau tiesiog ją surinkti ir bendrinti vykdomąjį failą, tačiau niekada nežinoma, ar jie norėtų išleisti naują versiją, ir jums reikės kuo greičiau sukurti naują kompiliaciją. Taigi nusprendžiau parengti vadovą, kaip iš šaltinių surinkti esminę priemonę. Pradėkime.

1 veiksmas: atsisiųskite „Sunxi-tools“

Atsisiųskite „Sunxi-tools“
Atsisiųskite „Sunxi-tools“
Atsisiųskite „Sunxi-tools“
Atsisiųskite „Sunxi-tools“

Gaukite naujausią (arba būtiną) „sunxi-tools“šaltinio kodo versiją. Eikite į URL: https://github.com/linux-sunxi/sunxi-tools/releases ir pasirinkite atsisiųsti kaip ZIP archyvą.

2 veiksmas: išpakuokite šaltinio kodą

Išpakuokite šaltinio kodą
Išpakuokite šaltinio kodą

Kai atsisiuntimas bus baigtas, išpakuokite šaltinio kodą į pasirinktą aplanką. (toliau darysiu prielaidą, kad šis aplankas yra c: / sunxitools \, todėl pakeiskite šį kelią savo keliu).

3 veiksmas: atsisiųskite kodą:: blokai

Parsisiųsti kodą:: blokai
Parsisiųsti kodą:: blokai

Jei turite įdiegtą operacinio „c ++“kompiliatoriaus, skirto „Windows“, kopiją. ir jei žinote, kaip juo naudotis, galite tiesiogiai pereiti prie 3 veiksmo. Kiti turėtų gauti tinkamą „c ++“kompiliatorių ir apvalkalą (IDE), kad galėtų patogiai juo naudotis. Mano pasirinkimas yra kodas:: blokai „Windows“kartu su iš anksto įdiegta „MinGW“įrankių grandinė. Jį galite gauti čia:

Atsisiųskite ir įdiekite.

4 žingsnis: išbandykite savo IDE

Išbandykite savo IDE
Išbandykite savo IDE

Norėdami patikrinti, ar viskas gerai, paleiskite kodo blokavimą, spustelėkite „sukurti naują projektą“, pasirinkite „konsolės programa“, pasirinkite c arba c ++, įveskite kasos projekto pavadinimą, kitame lange nepamirškite numatytųjų ir spustelėkite „Baigti“.

5 žingsnis: Užbaikite testą

Užpildykite testą
Užpildykite testą

Tada viršutiniame IDE skydelyje spustelėkite žalią trikampį arba naudokite meniu „Build-> Run“tašką. Jei viskas pavyko teisingai, juodame „DOS“lange turėtumėte matyti pranešimą iš savo automatiškai sukurtos programos „Labas pasaulis“.

Jei ne, tai reiškia, kad IDE ir kompiliatorius neveikia tinkamai ir turėsite ištirti, kaip tai teisingai nustatyti. Tikriausiai turėsite atsisiųsti kitą programavimo įrankių versiją arba patikrinti jų leidimus užkardoje/antivirusinėje programinėje įrangoje.

6 veiksmas: sukurkite naują projektą

Sukurti naują projektą
Sukurti naują projektą
Sukurti naują projektą
Sukurti naują projektą
Sukurti naują projektą
Sukurti naują projektą
Sukurti naują projektą
Sukurti naują projektą

Dabar savo kompiuterio aplanke c: sunxitools turėtumėte turėti veikiantį C/C ++ programuotojo įrankių rinkinį ir neišpakuotus „sunxi-tools“šaltinio kodus. Atėjo laikas surinkti projektą. Sukurkite naują projektą savo IDE. Pasirinkite paprastą C (ne c ++) projektą „konsolės programa“.

Įsitikinkite, kad kuriate projektą aplanke c: sunxitools, o ne kitoje vietoje. (EG kodo blokai linkę sukurti poaplankį tokiu pačiu pavadinimu, kaip ir projektas. Taigi, jei pavadinote savo projektą, pasakykite „test“ir pabandykite įdėti jį į c: / sunxitools \, galite baigti projektą į c: / sunxitools / test / jei nesate pakankamai dėmesingas.) Sunxi įrankiuose yra keletas komunalinių paslaugų, tačiau mūsų tikslui mums reikės tik vienos: vadinamosios "fexc" priemonės.

7 veiksmas: pridėkite failų prie projekto

Pridėkite failų prie projekto
Pridėkite failų prie projekto

Tiksliai „fexc“programa yra atsakinga už scenarijaus.bin konvertavimą į teksto formatą ir už atgalinį konvertavimą į dvejetainį. Svarbu, kad šios programos vykdomoji programa būtų pavadinta „fexc.exe“, todėl gerai, jei savo projektą pavadinote „fexc“. Tačiau galite naudoti bet kurį kitą projekto pavadinimą, nes po kompiliacijos visada galite pervadinti vykdomąjį failą arba galite pasirinkti „Projektas-> Ypatybės“iš viršutinio išskleidžiamojo meniu ir pasirodžiusiame lange spustelėkite skirtuką „Sukurti tikslus“, ir ten redaguokite lauką „Išvesties failo pavadinimas“, kad nepaisytumėte vykdomojo failo pavadinimo.

Prie savo automatiškai sugeneruoto projekto turėtumėte pridėti tik penkis šaltinio failus:

  • fexc.c
  • scenarijus.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

ir septyni antraštės failai:

  • list.h (perkelkite jį iš formos c: / sunxitools / include / aplanką į c: / sunxitools / aplanką)
  • fexc.h
  • scenarijus.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • versija.h

Būtinai pašalinkite iš projekto automatiškai sukurtą main.c, nes fexc.c jau turi funkciją „int main“. (Atminkite, kad bet kuri programa turėtų atlikti tik vieną pagrindinę funkciją?).

Visi reikalingi šaltinio kodo failai jau yra pakatalogyje, į kurį išpakavote šaltinio kodus. Antraštės failai nusipelno poros žodžių, kur juos gauti. „list.h“- paprastai yra neišpakuotų šaltinių kodų rinkinio poaplankyje „include“. "version.h" - tiesiog sukurkite tai patys. Įdėkite tokią eilutę:

#define VERSIJA „Win32“

Tada išsaugokite ir uždarykite failą. (Jei norite, galite papuošti #define ir #ifdef.)

Jei dabar bandysite surinkti projektą, jis bus skundžiamasi dėl daugybės klaidų ir vieno trūkstamo failo. Klaidos dažniausiai kyla dėl šiek tiek per didelės stiliaus laisvės, „Sunxi-tools“programuotojai, kurie taikydavo, o trūkstamas failas yra priklausomybė, neįtraukta į šaltinio kodo paketą. Leiskite tai spręsti žingsnis po žingsnio.

8 veiksmas: paprašykite Gcc laikytis 1999 m. ISO C kalbos standarto

Ar Gcc laikykitės 1999 m. ISO C kalbos standarto
Ar Gcc laikykitės 1999 m. ISO C kalbos standarto

Kad kompiliatorius nesiskųstų pernelyg laisvu programavimo stiliumi, nustatykite kompiliacijos standartą „с99“. Kodo blokuose eikite į meniu „Projektas -> Sukurti parinktis“ir skiltyje „Kompiliatoriaus nustatymai -> Kompiliatoriaus vėliavos“pažymėkite žymimąjį laukelį „Ar gcc laikytis 1999 m. ISO C kalbos standarto“. Arba galite tiesiog pridėti „-std = c99“į savo kompiliatoriaus parinkčių eilutę. Dabar, jei bandysite kompiliuoti projektą, turėtų atsirasti daugybė klaidų, ir jūs esate vienas prieš vieną su trūkstama priklausomybe.

9 veiksmas: raskite trūkstamą priklausomybę

Raskite trūkstamą priklausomybę
Raskite trūkstamą priklausomybę

Trūkstama priklausomybė yra „mman.h“failas - tam tikros rūšies „Linux“atminties tvarkyklės antraštė. Iš pradžių „Windows C“tokio failo neturi, bet, laimei, yra „Windows“prievadas. Eikite į https://github.com/witwall/mman-win32, skirtą „Windows“. Atsisiųskite „git“saugyklos momentinę nuotrauką.

10 veiksmas: išpakuokite „Mman“

Išpakuokite „Mman“
Išpakuokite „Mman“

Išpakuokite failus mman.c ir mman.h, įdėkite juos į aplanką c: sunxitools \.

11 veiksmas: pridėkite juos prie projekto

Ir pridėkite juos prie projekto
Ir pridėkite juos prie projekto

12 žingsnis: teisingas kelias

Teisingas kelias
Teisingas kelias

Failo „fex.c“raplece eilutėje:

#įtraukti

į

#įtraukti „mman.h“

Šiame žingsnyje jūsų kompiliatorius neturėtų nieko skųstis ir kaip išvestį gausite ilgą laukimą fexc.exe. Nebūk laimingas per anksti. Naudingumas vis dar nėra visiškai funkcionalus. Tai galite užtikrinti iššifravę galiojantį „script.bin“failą į teksto formą - „script.fex“failą ir užšifravę „script.fex“failą atgal į „script.bin“. Galite pastebėti, kad gauto scenarijaus.bin dydis šiek tiek skiriasi nuo pradinio scenarijaus.bin dydžio. Ir jei dar kartą bandysite iššifruoti gautą rezultatą, tai nepavyks. Nei oranžinis PI neveiks su šiuo scenarijumi.bin. Norėdami gauti funkcinę naudą, turime išleisti kodinę bombą, kurią kažkas įdėjo į „sunxi-tools“šaltinio kodą. Tai bus kitas mūsų žingsnis.

13 žingsnis: egzorcizmas

Egzorcizmas
Egzorcizmas

Norėdami iškrauti kodinę bombą, atidarykite „fexc.c“kodo failą ir suraskite kito turinio teksto eilutę:

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

Tiesiog pakeiskite jį kita eilute:

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

Jei ne blogieji skaitmenys „666“pirmoje eilutėje, manau, kad koduotojas tiesiog pamiršo naudoti O_BINARY vėliavą. Tačiau „Žvėries numeris“skaidriai paaiškina jo ketinimus. Supraskite, koks tai išradingas: dėl nedidelio skirtumo, kaip failai apdorojami sistemoje „Windows“ir „Linux“, bomba neturi jokio poveikio, kai programa sukompiliuota ir naudojama naudojant „Linux“. Bet tai sugadina viską, kai programa naudojama „Windows“.

Po to, kai bomba buvo nuginkluota, pagaliau galite sukompiliuoti ir saugiai naudoti fexc įrankį savo „Windows“staliniame kompiuteryje.

14 žingsnis: PASTABOS

PASTABOS
PASTABOS

1) Norėdami patogiai naudotis fexc programa, turėtumėte gauti du paketinius failus:

bin2fex.bat - ir - fex2bin.bat.

Galite juos gauti iš kai kurių „faily fexc.exe“versijų, skirtų „Windows“, arba galite jas įvesti patys:

  • „bin2fex.bat“turėtų būti „fexc -I bin -O fex script.bin script.fex“
  • fex2bin.bat turi būti "fexc -O bin -I fex script.fex script.bin"

2) Jei sunku rasti „Windows“skirtą „mman“tvarkyklę, galite visiškai išvengti jos naudojimo. Tačiau reikia daug daugiau redaguoti fexc.c failą ir reikia bent šiek tiek žinių apie c. Jūsų įsitikinimui dalinuosi redaguotu „fexc“šaltinio kodu iš „sunxi-tools v1.4“be priklausomybės nuo „mman.h“, kartu su „codeblocks“projekto failu ir su scenarijaus pavyzdžiu. Galite atsisiųsti fexc_nomman.zip

3) Gali būti, kad vėlesnėse „Sunxi“įrankių versijose jie pridės dar keletą priklausomybių. Nesivaržykite jų rasti internete ir įtraukti į savo kompiliacijos projektą.

5) Galiausiai čia yra iš anksto sukompiliuota „fexc.exe“versija, skirta „Win32“:

fexc_nomman.zip

Jei esate pakankamai tingus, nedvejodami naudokite ver. Tačiau saugokitės, kad jis nebus atnaujintas, jei/kada bus prieinamos naujesnės „SunxiTools“/„Windows“versijos. Taigi manau, kad geriau išmokti juos surinkti, nei priklausyti nuo tam tikros fiksuotos dvejetainės konstrukcijos.

4) „Oranžinis PI“, „Code:: Blocks“, „Windows“, „Linux“, „Sunxi-Tools“, „Allwinner“ir tt… yra atitinkamų jų savininkų prekių ženklai.

5) Jei kompiliatorius skundžiasi neradęs mman funkcijų, tokių kaip:

neapibrėžta nuoroda į „_imp_mmap“

atminkite, kad „mman“plėtros bendruomenės mėgėjai pamiršo, kad kodą galima surinkti ne tik kaip „DLL“biblioteką. Tai taip pat gali būti statinė biblioteka arba atskiras kodas, kokį turime čia. Norėdami išspręsti problemą, redaguokite „mman.h“failą taip:

a) raskite eilutes:

#if apibrėžta (MMAN_LIBRARY)

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

b) pridėkite eilutę

#define MMANSHARED_EXPORT

tik žemiau eilučių, rastų ankstesniame žingsnyje

Rekomenduojamas: