Obsah:

Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)

Video: Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)

Video: Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 Steps (with Pictures)
Video: Съемка таймлапс роликов с помощью Orange pi zero и вебки 2024, December
Anonim
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows

PREDPOKLADY:

Budete potrebovať

  1. Počítač (stolný) so systémom Windows.
  2. Pripojenie na internet.
  3. Doska Orange PI.

Posledný je voliteľný, ale som si istý, že ho už máte. Inak si tento návod neprečítate.

Keď si kúpite jednodoskový počítač Orange PI, zostane iba kusom mŕtveho kovu, kým nebude správne nakonfigurovaný. A jeho hlavný konfiguračný súbor: „script.bin“je prvým kľúčom, ktorý ho oživí. Tento súbor sa nachádza v zavádzacom oddiele bootovacej karty SD. A našťastie pre nás, vo väčšine distribúcií Linuxu z oficiálnych stránok (https://www.orangepi.org/downloadresources/) je tento oddiel FAT32 a je ľahko viditeľný na akomkoľvek počítači so systémom Windows. Skutočne to veci zjednodušuje, pretože stále neexistuje spoľahlivý spôsob, ako zapisovať do oddielov Linux ext2 z operačného systému Windows.

Máme smolu, že konfiguračný súbor script.bin má binárny formát, ktorý je pre úpravy ľudí úplne nepriateľský. Človek potrebuje nejaký druh softvérového nástroja, ktorý by ho dešifroval a po vykonaní potrebných úprav ho opäť kryptoval. A taká sada nástrojov existuje. Je to neslávne známe SUNXI-NÁSTROJE. Problémom je, že je určený na použitie pod Linuxom a buď si musíme ponechať vyhradený stroj Linux iba na používanie nástrojov sunxi, alebo nájsť spôsob, ako ich skompilovať pre Windows.

Mohol by som to jednoducho skompilovať a zdieľať spustiteľný súbor, ale jeden nikdy nevie, či by chceli vydať nové vydanie a budete potrebovať novú kompiláciu ASAP. Preto som sa rozhodol urobiť príručku, ako zostaviť základný nástroj zo zdrojov. Začnime.

Krok 1: Stiahnite si nástroje Sunxi

Stiahnite si nástroje Sunxi
Stiahnite si nástroje Sunxi
Stiahnite si nástroje Sunxi
Stiahnite si nástroje Sunxi

Získajte najnovšiu (alebo potrebnú) verziu zdrojového kódu sunxi-tools. Prejdite na adresu URL: https://github.com/linux-sunxi/sunxi-tools/releases a zvoľte sťahovanie ako zip archív.

Krok 2: Rozbaľte zdrojový kód

Rozbaľte zdrojový kód
Rozbaľte zdrojový kód

Po dokončení sťahovania rozbaľte zdrojový kód do priečinka podľa vášho výberu. (ďalej budem predpokladať, že tento priečinok je c: / sunxitools \, preto túto cestu nahraďte vlastnou cestou).

Krok 3: Stiahnite si kód:: bloky

Stiahnite si kód:: bloky
Stiahnite si kód:: bloky

Ak máte nainštalovanú kópiu operačného kompilátora C ++ pre Windows. a ak viete, ako ho používať, môžete priamo prejsť na krok 3. Ostatní by si mali zaobstarať správny kompilátor c ++ a shell (IDE), aby ho mohli pohodlne používať. Na výber mám kód:: bloky pre Windows spolu s predinštalovaným reťazcom nástrojov MinGW. Môžete ho získať tu:

Stiahnite a nainštalujte ho.

Krok 4: Otestujte si IDE

Otestujte si IDE
Otestujte si IDE

Ak chcete otestovať, či je všetko v poriadku, spustite bloky kódov, kliknite na „vytvoriť nový projekt“, zvoľte „konzolová aplikácia“, zvoľte buď c alebo c ++, zadajte názov projektu pokladne, v nasledujúcom okne ponechajte pôvodné nastavenia nedotknuté a kliknite na „dokončiť“. “.

Krok 5: Dokončite test

Kompletný test
Kompletný test

Potom kliknite na zelený trojuholník na hornom paneli IDE alebo použite bod ponuky Build-> Run. Ak išlo všetko dobre, v čiernom okne „DOS“by sa vám mala zobraziť správa z vašej automaticky vygenerovanej aplikácie „Hello world“.

Ak nie, znamená to, že IDE a kompilátor nepracujú správne a budete musieť preskúmať, ako ho správne nastaviť. Pravdepodobne si budete musieť stiahnuť inú verziu programovacích nástrojov alebo skontrolovať ich povolenia vo svojom firewalle/antivírusovom softvéri.

Krok 6: Vytvorte nový projekt

Vytvoriť nový projekt
Vytvoriť nový projekt
Vytvoriť nový projekt
Vytvoriť nový projekt
Vytvoriť nový projekt
Vytvoriť nový projekt
Vytvoriť nový projekt
Vytvoriť nový projekt

Teraz by ste mali mať v počítači funkčnú sadu nástrojov programátora C/C ++ a rozbalené zdrojové kódy sunxi-tools v priečinku c: / sunxitools \. Je čas zostaviť projekt. Vytvorte nový projekt vo svojom IDE. Vyberte obyčajný projekt C (nie c ++) typu „konzolová aplikácia“.

Uistite sa, že vytvárate projekt v priečinku c: / sunxitools / a nie na inom mieste. (Kódové bloky EG majú tendenciu vytvárať podpriečinok s rovnakým názvom, ako má projekt. Ak ste teda pomenovali svoj projekt, povedzte „test“a skúste ho umiestniť do adresára c: / sunxitools \, môže sa stať, že projekt skončí. to c: / sunxitools / test / ak nie ste dostatočne pozorní.) Nástroje Sunxi obsahujú niekoľko nástrojov, ale na náš účel budeme potrebovať iba jeden: takzvaný nástroj „fexc“.

Krok 7: Pridajte súbory do projektu

Pridajte súbory do projektu
Pridajte súbory do projektu

Presne "fexc" nástroj je zodpovedný za konverziu script.bin do textového formátu a za spätnú konverziu do binárnej. Je nevyhnutné, aby spustiteľný súbor tohto nástroja mal názov „fexc.exe“, takže je dobré, ak ste svoj projekt pomenovali ako „fexc“. Môžete však použiť ľubovoľný iný názov projektu, pretože spustiteľný súbor môžete po kompilácii kedykoľvek premenovať, alebo môžete buď vybrať „Projekt-> Vlastnosti“v hornom rozbaľovacom zozname a v zobrazenom okne kliknite na kartu „Vytvoriť ciele“, a upravte tam pole „Výstupný názov súboru“, aby ste nahradili názov spustiteľného súboru.

Do vášho automaticky generovaného projektu by ste mali pridať iba päť zdrojových súborov:

  • fexc.c
  • skript.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

a sedem hlavičkových súborov:

  • list.h (presuňte ho z c: / sunxitools / include / priečinok do c: / sunxitools / priečinok)
  • fexc.h
  • skript.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • verzia.h

Uistite sa, že ste z projektu vylúčili automaticky generovaný main.c, pretože fexc.c už má v sebe funkciu „int main“. (Nezabudnite, že každý program by mal mať iba jednu hlavnú funkciu?).

Všetky potrebné súbory zdrojového kódu sú už v podpriečinku, do ktorého ste rozbalili zdrojové kódy. Hlavičkové súbory si zaslúžia pár slov, kde ich získať. „list.h“- je zvyčajne v podpriečinku „zahrnúť“rozbalenej sady zdrojových kódov. „version.h“- vytvorte si ho sami. Zadajte reťazec ako:

#define VERZIA „Win32“

Potom súbor uložte a zatvorte. (Ak chcete, môžete ho ozdobiť #definíciami a #ifdefmi.)

Ak sa teraz pokúsite zostaviť projekt, bude sa sťažovať na veľa chýb a jeden chýbajúci súbor. Chyby sú väčšinou spôsobené trochou nadmernej slobody štýlu, na ktorú sa programátori sunxi-tools používali, a chýbajúci súbor je závislosť, ktorá nie je zahrnutá v balení zdrojového kódu. Poďme sa s tým vysporiadať krok za krokom.

Krok 8: Nechajte GCC dodržiavať jazykový štandard ISO C z roku 1999

Nechajte GCC dodržiavať jazykový štandard ISO C z roku 1999
Nechajte GCC dodržiavať jazykový štandard ISO C z roku 1999

Aby sa kompilátor nesťažoval na príliš voľný štýl programovania, nastavte štandard kompilácie „с99“. V kódových blokoch prejdite do ponuky „Projekt -> Možnosti zostavenia“a v „Nastavenia kompilátora -> Vlajky kompilátora“začiarknite políčko „Nechajte gcc dodržiavať štandard normy ISO ISO 1999“. Alebo môžete do reťazca možností kompilátora jednoducho pridať "-std = c99". Teraz, keď sa pokúsite zostaviť projekt, by sa malo začať s tými chybami a vy budete jedna k jednej s chýbajúcou závislosťou.

Krok 9: Nájdite chýbajúcu závislosť

Nájdite chýbajúcu závislosť
Nájdite chýbajúcu závislosť

Chýbajúcou závislosťou je súbor "mman.h" - hlavička nejakého správcu pamäte Linux. Windows C natívne taký súbor nemá, ale našťastie existuje jeho port pre Windows. Prejdite na https://github.com/witwall/mman-win32 pre Windows. Stiahnite si snímku repozitára git.

Krok 10: Rozbaľte Mman

Rozbaľte Mman
Rozbaľte Mman

Rozbaľte súbory mman.c a mman.h a umiestnite ich do priečinka c: / sunxitools \.

Krok 11: A pridajte ich do projektu

A pridajte ich do projektu
A pridajte ich do projektu

Krok 12: Správna cesta

Správna cesta
Správna cesta

A v súbore raplece súboru „fex.c“:

#zahrnúť

do

#include "mman.h"

V tomto kroku by sa váš prekladač nemal na nič sťažovať a ako výstup dostanete dlhé čakanie fexc.exe. Nebuď šťastný príliš skoro. Tento nástroj stále nie je úplne funkčný. Môžete to zaistiť dešifrovaním nejakého platného súboru script.bin do textovej podoby - súboru script.fex s následným zašifrovaním súboru script.fex späť do súboru script.bin. Môžete si všimnúť, že veľkosť výsledného súboru script.bin sa mierne líši od veľkosti pôvodného súboru script.bin. A ak sa pokúsite znova dešifrovať výsledné číslo, zlyhá. S týmto skriptom.bin nebude fungovať ani Orange PI. Aby sme získali funkčný nástroj, musíme vybiť kódovú bombu, ktorú niekto vložil do zdrojového kódu sunxi-tools. Bude to náš ďalší krok.

Krok 13: Exorcizmus

Exorcizmus
Exorcizmus

Ak chcete vybiť kódovú bombu, otvorte súbor s kódom fexc.c a nájdite tam textový reťazec nasledujúceho obsahu:

else if ((out = otvorený (názov súboru, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Stačí ho nahradiť nasledujúcim reťazcom:

else if ((out = otvorený (názov súboru, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Ak nie, zlé číslice „666“v prvom reťazci by som si myslel, že kodér práve zabudol použiť príznak O_BINARY. Number of the Beast však jeho zámery transparentne objasňuje. Choďte na to, aké je to dômyselné: kvôli jemnému rozdielu v spôsobe spracovania súborov v systémoch Windows a Linux bomba nemá žiadny účinok, keď je nástroj zostavený a používaný v systéme Linux. Keď sa však tento nástroj používa pod systémom Windows, všetko zničí.

Po zneškodnení bomby môžete konečne skompilovať a bezpečne používať nástroj fexc na stolnom počítači so systémom Windows.

Krok 14: POZNÁMKY

POZNÁMKY
POZNÁMKY

1) Na pohodlné používanie pomocného programu fexc by ste mali dostať dva dávkové súbory:

bin2fex.bat - a - fex2bin.bat.

Môžete ich získať z nejakej faily fexc.exe zostavy pre Windows, alebo ich môžete zadať sami:

  • bin2fex.bat by mal obsahovať „fexc -I bin -O fex script.bin script.fex“
  • fex2bin.bat by mal obsahovať „fexc -O bin -I fex script.fex script.bin“

2) Ak je ťažké nájsť správcu mman pre Windows, dá sa jeho použitiu úplne vyhnúť. Vyžaduje však oveľa viac úprav súboru fexc.c a vyžaduje aspoň určité znalosti o jazyku c. Pre vašu istotu zdieľam upravený zdrojový kód fexc zo súboru sunxi-tools v1.4 bez závislosti na mman.h spolu so súborom projektu codeblocks a so vzorovým skriptom.bin z nejakého oranžového pí. Môžete si stiahnuť fexc_nomman.zip

3) Je možné, že v nasledujúcich verziách nástrojov sunxi pridajú ďalšie závislosti. Neváhajte ich nájsť na internete a pridajte ich do svojho kompilačného projektu.

5) Nakoniec je tu predkompilovaná verzia fexc.exe pre Win32:

fexc_nomman.zip

Ak ste leniví, použite ver. Dávajte si však pozor na to, že nebude aktualizovaný, ak/keď budú k dispozícii novšie verzie programu SunxiTools/Windows. Predpokladám teda, že je lepšie naučiť sa ich zostavovať, než závisieť od nejakej pevnej binárnej zostavy.

4) „Orange PI“, „Code:: Blocks“, „Windows“, „Linux“, „Sunxi-Tools“, „Allwinner“atď.… Sú zodpovedajúce ochranné známky príslušných vlastníkov.

5) Ak sa vám kompilátor sťažuje, že nenašiel funkcie mman, napríklad:

nedefinovaný odkaz na '_imp_mmap'

vedzte, že milovníci definície komunity vývojárov mman zabudli, že kód je možné kompilovať nielen ako dll knižnicu. Môže to byť aj statická knižnica alebo samostatný kód, aký tu máme. Ak chcete problém vyriešiť, upravte súbor "mman.h" nasledovne:

a) nájdite reťazce:

#if definované (MMAN_LIBRARY)

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

b) pridajte reťazec

#define MMANSHARED_EXPORT

tesne pod reťazcami nájdenými v predchádzajúcom kroku

Odporúča: