Satura rādītājs:

Orange PI HowTo: Apkopojiet Sunxi rīku operētājsistēmai Windows operētājsistēmai Windows: 14 soļi (ar attēliem)
Orange PI HowTo: Apkopojiet Sunxi rīku operētājsistēmai Windows operētājsistēmai Windows: 14 soļi (ar attēliem)

Video: Orange PI HowTo: Apkopojiet Sunxi rīku operētājsistēmai Windows operētājsistēmai Windows: 14 soļi (ar attēliem)

Video: Orange PI HowTo: Apkopojiet Sunxi rīku operētājsistēmai Windows operētājsistēmai Windows: 14 soļi (ar attēliem)
Video: CS50x 2023 - Лекция 4 - Память 2024, Novembris
Anonim
Orange PI HowTo: Apkopojiet Sunxi rīku operētājsistēmai Windows operētājsistēmā Windows
Orange PI HowTo: Apkopojiet Sunxi rīku operētājsistēmai Windows operētājsistēmā Windows

PRIEKŠLIKUMI:

Jums būs nepieciešams

  1. (Galddators), kurā darbojas sistēma Windows.
  2. Interneta savienojums.
  3. Oranžā PI plāksne.

Pēdējais nav obligāts, bet esmu pārliecināts, ka jums tas jau ir. Pretējā gadījumā jūs neizlasīsit šo pamācību.

Pērkot Orange PI viena paneļa datoru, tas paliek tikai miris metāla gabals, līdz tas ir pareizi konfigurēts. Un tā galvenais konfigurācijas fails: "script.bin" ir pirmā atslēga, kas to atdzīvina. Šis fails atrodas jūsu sāknējamās SD kartes sāknēšanas nodalījumā. Un mums par laimi, lielākajā daļā Linux izplatījumu no oficiālās vietnes (https://www.orangepi.org/downloadresources/) šis nodalījums ir FAT32, un to var viegli redzēt jebkurā Windows datorā. Tas patiešām vienkāršo lietas, jo joprojām nav uzticama veida, kā ierakstīt Linux ext2 nodalījumos no Windows.

Mums nav paveicies, ka konfigurācijas faila script.bin binārais formāts ir pilnīgi nedraudzīgs cilvēku rediģēšanai. Ir nepieciešams kaut kāds programmatūras rīks, lai to atšifrētu un pēc vajadzīgo izmaiņu veikšanas atšifrētu. Un šāds rīku komplekts pastāv. Tas ir bēdīgi slavenie SUNXI-TOOLS. Īsumā ir tas, ka tas ir paredzēts darbam ar Linux, un mums vai nu ir jāsaglabā īpaša Linux mašīna, lai tikai izmantotu sunxi rīkus, vai arī jāatrod veids, kā tos apkopot logiem.

Es varētu vienkārši to apkopot un koplietot izpildāmo failu, taču nekad nevar zināt, vai viņi vēlētos izlaist jaunu versiju, un jums būs nepieciešama jauna kompilācija ASAP. Tāpēc es nolēmu izveidot ceļvedi, kā apkopot būtisko rīku no avotiem. Sāksim.

1. darbība: lejupielādējiet Sunxi-tools

Lejupielādējiet Sunxi-tools
Lejupielādējiet Sunxi-tools
Lejupielādējiet Sunxi-tools
Lejupielādējiet Sunxi-tools

Iegūstiet jaunāko (vai nepieciešamo) sunxi-tools avota koda versiju. Dodieties uz vietrādi URL: https://github.com/linux-sunxi/sunxi-tools/releases un izvēlieties lejupielādēt kā zip arhīvu.

2. darbība: izpakojiet avota kodu

Izsaiņojiet avota kodu
Izsaiņojiet avota kodu

Kad lejupielāde ir pabeigta, izpakojiet avota kodu izvēlētajā mapē. (tālāk es pieņemšu, ka šī mape ir c: / sunxitools \, tāpēc aizstājiet šo ceļu ar savu ceļu).

3. darbība: lejupielādējiet kodu:: bloki

Lejupielādēt kodu:: bloki
Lejupielādēt kodu:: bloki

Ja jums ir instalēta kāda Windows operētājsistēmas c ++ kompilatora kopija. un, ja jūs zināt, kā to izmantot, varat tieši pāriet uz 3. darbību. Citiem vajadzētu saņemt atbilstošu c ++ kompilatoru un apvalku (IDE), lai to ērti izmantotu. Mana izvēle ir kods:: bloki operētājsistēmai Windows kopā ar iepriekš instalētu rīku ķēdi MinGW. To var iegūt šeit:

Lejupielādējiet un instalējiet to.

4. darbība: pārbaudiet savu IDE

Pārbaudiet savu IDE
Pārbaudiet savu IDE

Lai pārbaudītu, vai viss ir kārtībā, sāciet kodu bloķēšanu, noklikšķiniet uz "izveidot jaunu projektu", izvēlieties "konsoles lietojumprogramma", izvēlieties vai nu c, vai c ++, ierakstiet izrakstīšanās projekta nosaukumu, saglabājiet noklusējuma vērtības neskartas nākamajā logā un noklikšķiniet uz "Pabeigt" ".

5. darbība: pabeidziet pārbaudi

Pabeigt testu
Pabeigt testu

Pēc tam IDE augšējā panelī noklikšķiniet uz zaļa trijstūra vai izmantojiet izvēlnes Build-> Run punktu. Ja viss notika pareizi, melnajā "DOS" logā vajadzētu redzēt ziņojumu no jūsu automātiski ģenerētās lietojumprogrammas "Hello world".

Ja nē, tas nozīmē, ka IDE un kompilators nedarbojas pareizi, un jums būs jāizpēta, kā to pareizi iestatīt. Iespējams, jums būs jālejupielādē cita programmēšanas rīku versija vai jāpārbauda to atļaujas ugunsmūra/pretvīrusu programmatūrā.

6. darbība: izveidojiet jaunu projektu

Izveidot jaunu projektu
Izveidot jaunu projektu
Izveidot jaunu projektu
Izveidot jaunu projektu
Izveidot jaunu projektu
Izveidot jaunu projektu
Izveidot jaunu projektu
Izveidot jaunu projektu

Tagad jūsu datora mapē c: sunxitools ir jābūt operatīvam C/C ++ programmētāja rīkkopam un neizsaiņotiem sunxi-tools avota kodiem. Ir pienācis laiks apkopot projektu. Izveidojiet jaunu projektu savā IDE. Izvēlieties vienkāršu C (nevis c ++) projektu "konsoles lietojumprogramma".

Pārliecinieties, vai veidojat projektu mapē c: / sunxitools \, nevis kādā citā vietā. (EG koda bloki mēdz izveidot apakšmapi ar tādu pašu nosaukumu, kāds ir projektam. Tātad, ja esat nosaucis savu projektu, sakiet "test" un mēģiniet to ievietot mapē c: / sunxitools \, iespējams, ka projekts būs beidzies uz c: / sunxitools / test / ja neesat pietiekami uzmanīgs.) Sunxi rīkos ir vairākas utilītas, taču mūsu vajadzībām mums būs nepieciešams tikai viens: tā sauktā "fexc" utilīta.

7. darbība: pievienojiet failus projektam

Pievienojiet failus projektam
Pievienojiet failus projektam

Tieši "fexc" lietderība ir atbildīga par skripta.bin konvertēšanu teksta formātā un par atpakaļ pārveidošanu binārā. Ir būtiski, lai šīs utilītas izpildāmā faila nosaukums būtu "fexc.exe", tāpēc ir labi, ja esat nosaucis savu projektu par "fexc". Tomēr jūs varat izmantot jebkuru citu projekta nosaukumu, jo pēc apkopošanas jūs vienmēr varat pārdēvēt izpildāmo failu, vai arī augšējā nolaižamajā izvēlnē varat izvēlēties "Projekts-> Rekvizīti" un parādītajā logā noklikšķiniet uz cilnes Veidot mērķus, un rediģējiet lauku "Izvades faila nosaukums", lai ignorētu izpildāmā nosaukuma nosaukumu.

Jūsu automātiski ģenerētajam projektam jāpievieno tikai pieci avota faili:

  • fexc.c
  • skripts.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

un septiņi galvenes faili:

  • list.h (pārvietojiet to no c: / sunxitools / include / mapes uz mapi c: / sunxitools)
  • fexc.h
  • skripts.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • versija.h

Noteikti izslēdziet no projekta automātiski ģenerēto main.c, jo programmā fexc.c jau ir funkcija "int main". (Atcerieties, ka jebkurai programmai vajadzētu būt tikai vienai galvenajai funkcijai?).

Visi nepieciešamie avota koda faili jau atrodas apakšmapē, kur jūs esat izpakojuši avota kodus. Galvenes faili ir pelnījuši pāris vārdu, kur tos iegūt. "list.h" - parasti atrodas neiesaiņoto pirmkodu kopas apakšmapē "include". "version.h" - vienkārši izveidojiet to pats. Ievietojiet šādu virkni:

#define VERSIJA "Win32"

Pēc tam saglabājiet un aizveriet failu. (Ja vēlaties, varat to dekorēt ar #define's un #ifdef.)

Ja jūs tagad mēģināt apkopot projektu, tas sūdzēsies par daudzām kļūdām un vienu trūkstošu failu. Kļūdas lielākoties ir saistītas ar mazliet pārmērīgu stila brīvību, Sunxi-tools programmētājiem, kurus izmantoja, un trūkstošais fails ir atkarība, kas nav iekļauta avota koda pakotnē. Ļaujiet tikt galā ar šo soli pa solim.

8. solis: Gcc ievērojiet 1999. gada ISO C valodas standartu

Vai Gcc ievēro 1999. gada ISO C valodas standartu
Vai Gcc ievēro 1999. gada ISO C valodas standartu

Lai kompilators nesūdzētos par pārāk brīvo programmēšanas stilu, iestatiet kompilācijas standartu "с99". Kodu blokos dodieties uz izvēlni "Projekts -> Veidot opcijas" un sadaļā "Sastādītāja iestatījumi -> Sastādītāja karogi" atzīmējiet izvēles rūtiņu "Vai gcc ievēro 1999. gada ISO C valodas standartu". Vai arī jūs varat vienkārši pievienot "-std = c99" savā kompilatora opciju virknē. Tagad, ja mēģināt apkopot projektu, šīm kļūdām vajadzētu sākties, un jūs esat viens pret vienu ar trūkstošo atkarību.

9. darbība. Atrodiet trūkstošo atkarību

Atrodiet trūkstošo atkarību
Atrodiet trūkstošo atkarību

Trūkstošā atkarība ir fails "mman.h" - kāda veida Linux atmiņas pārvaldnieka galvene. Operētājsistēmā Windows C šāda faila nav, bet par laimi tam ir Windows ports. Lai iegūtu Windows, dodieties uz vietni https://github.com/witwall/mman-win32. Lejupielādējiet git repozitorija momentuzņēmumu.

10. darbība: izpakojiet Mman

Izsaiņojiet Mman
Izsaiņojiet Mman

Izsaiņojiet failus mman.c un mman.h, ievietojiet tos mapē c: sunxitools.

11. solis: pievienojiet tos projektam

Un pievienojiet tos projektam
Un pievienojiet tos projektam

12. solis: pareizs ceļš

Pareizais ceļš
Pareizais ceļš

Un failā "fex.c" krāšņuma līnija:

#iekļaut

uz

#ietver "mman.h"

Šajā solī jūsu kompilatoram nevajadzētu neko sūdzēties, un jūs kā izvadi saņemsiet ilgu gaidīšanas laiku fexc.exe. Neesi laimīgs pārāk agri. Lietderība joprojām nav pilnībā funkcionāla. To varat nodrošināt, teksta formā atšifrējot kādu derīgu failu script.bin - failu script.fex, un šifrējot failu script.fex atpakaļ šifrēšanas failā script.bin. Jūs varat atzīmēt, ka iegūtā script.bin izmērs nedaudz atšķiras no sākotnējā script.bin lieluma. Un, ja jūs vēlreiz mēģināsit atšifrēt iegūto rezultātu, tas neizdosies. Ne Orange PI nedarbosies ar šo skriptu.bin. Lai iegūtu funkcionālu lietderību, mums jāizlādē koda bumba, ko kāds ir ievietojis sunxi-tools avota kodā. Tas būs mūsu nākamais solis.

13. solis: eksorcisms

Eksorcisms
Eksorcisms

Lai izlādētu koda bumbu, atveriet fexc.c koda failu un atrodiet nākamā satura teksta virkni:

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

Vienkārši nomainiet to ar nākamo virkni:

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

Ja ne ļaunie cipari "666" pirmajā virknē, es domāju, ka kodētājs ir vienkārši aizmirsis izmantot O_BINARY karodziņu. Bet zvēra numurs pārredzami izskaidro viņa nodomus. Iedomājieties, cik tas ir ģeniāli: pateicoties nelielajai atšķirībai failu apstrādē operētājsistēmā Windows un Linux, bumba neietekmē, ja utilīta tiek apkopota un izmantota Linux. Bet tas visu sabojā, ja utilīta tiek izmantota operētājsistēmā Windows.

Pēc tam, kad spridzeklis ir atbruņots, jūs beidzot varat apkopot un droši izmantot utilītu fexc savā Windows galddatorā.

14. darbība: PIEZĪMES

PIEZĪMES
PIEZĪMES

1) Lai ērti lietotu fexc utilītu, jums vajadzētu iegūt divus pakešu failus:

bin2fex.bat - un - fex2bin.bat.

Jūs varat tos iegūt no kādas faily fexc.exe Windows versijas, vai arī varat tos ierakstīt pats:

  • bin2fex.bat jāiekļauj "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat jāiekļauj "fexc -O bin -I fex script.fex script.bin"

2) Ja ir grūti atrast Windows operētājsistēmas pārvaldnieku, varat vispār izvairīties no tā izmantošanas. Tomēr tas prasa daudz vairāk fexc.c faila rediģēšanas un prasa vismaz zināmas zināšanas par c. Jūsu pārliecībai es dalos ar rediģēto avota kodu fexc no sunxi-tools v1.4 bez atkarības no mman.h, kā arī koda bloķēšanas projekta failu un parauga skriptu.bin no kāda oranža pi. Jūs varat lejupielādēt fexc_nomman.zip

3) Iespējams, ka turpmākajās sunxi rīku versijās tie pievienos vēl dažas atkarības. Jūtieties brīvi atrast tos internetā un pievienot tos savam apkopošanas projektam.

5) Visbeidzot, šeit ir iepriekš apkopota fexc.exe versija Win32:

fexc_nomman.zip

Ja esat pietiekami slinks, lūdzu, izmantojiet ver. Tomēr uzmanieties, ka tas netiks atjaunināts, ja/kad būs pieejamas jaunākās SunxiTools/Windows versijas. Tāpēc es domāju, ka labāk ir iemācīties tos apkopot, nekā paļauties uz noteiktu fiksētu bināro uzbūvi.

4) "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner" utt … ir to īpašnieku atbilstošās preču zīmes.

5) Ja jūs sastādītājs sūdzas, ka netiek atrastas mman funkcijas, piemēram:

nenoteikta atsauce uz '_imp_mmap'

ņemiet vērā, ka Mman attīstības kopienas cienītāji ir aizmirsuši, ka kodu var apkopot ne tikai kā dll bibliotēku. Tā var būt arī statiska bibliotēka vai atsevišķs kods, kāds mums ir šeit. Lai novērstu problēmu, rediģējiet failu "mman.h" šādi:

a) atrodiet virknes:

#ja definēts (MMAN_LIBRARY)

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

b) pievienojiet virkni

#define MMANSHARED_EXPORT

tieši zem virknēm, kas atrastas iepriekšējā solī

Ieteicams: