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, Listopad
Anonim
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows

PŘEDPOKLADY:

Budete potřebovat

  1. Počítač (stolní) se systémem Windows.
  2. Připojení k internetu.
  3. Oranžová deska PI.

Poslední je volitelný, ale jsem si jistý, že ho již máte. Jinak si tento návod nepřečtete.

Když si koupíte jednodeskový počítač Orange PI, zůstane jen kusem mrtvého kovu, dokud nebude správně nakonfigurován. A jeho hlavní konfigurační soubor: „script.bin“je prvním klíčem, jak jej oživit. Tento soubor je umístěn ve spouštěcím oddílu vaší zaváděcí karty SD. A naštěstí pro nás je ve většině distribucí Linuxu z oficiálních stránek (https://www.orangepi.org/downloadresources/) tento oddíl FAT32 a lze jej snadno vidět na jakémkoli počítači se systémem Windows. Skutečně to věci zjednodušuje, protože stále neexistuje spolehlivý způsob, jak zapisovat do oddílů Linux ext2 pod Windows.

Bohužel pro nás má konfigurační soubor script.bin binární formát, který je pro lidské úpravy zcela nepřátelský. Člověk potřebuje nějaký druh softwarového nástroje, aby ho mohl dešifrovat a po provedení nezbytných úprav znovu zašifrovat. A taková sada nástrojů existuje. Je to neslavné SUNXI-NÁSTROJE. Problémem je, že je určen pro běh pod Linuxem a buď si musíme ponechat vyhrazený linuxový stroj pouze pro používání nástrojů sunxi, nebo najít způsob, jak je zkompilovat pro Windows.

Mohl bych to jednoduše zkompilovat a sdílet spustitelný soubor, ale jeden nikdy neví, zda by chtěli vydat nové vydání a budete potřebovat novou kompilaci ASAP. Rozhodl jsem se proto vytvořit průvodce, jak zkompilovat základní nástroj ze zdrojů. Začněme.

Krok 1: Stáhněte si nástroje Sunxi

Stáhněte si nástroje Sunxi
Stáhněte si nástroje Sunxi
Stáhněte si nástroje Sunxi
Stáhněte si nástroje Sunxi

Získejte nejnovější (nebo nezbytnou) verzi zdrojového kódu sunxi-tools. Přejděte na adresu URL: https://github.com/linux-sunxi/sunxi-tools/releases a zvolte stahování jako zip archiv.

Krok 2: Rozbalte zdrojový kód

Rozbalte zdrojový kód
Rozbalte zdrojový kód

Jakmile je stahování dokončeno, rozbalte zdrojový kód do vámi zvolené složky. (dále budu předpokládat, že tato složka je c: / sunxitools \, nahraďte tedy tuto cestu vlastní cestou).

Krok 3: Stáhněte si kód:: bloky

Stáhněte si kód:: bloky
Stáhněte si kód:: bloky

Pokud máte nainstalovanou kopii nějakého provozního kompilátoru C ++ pro Windows. a pokud víte, jak jej používat, můžete přímo přejít ke kroku 3. Ostatní by měli získat správný kompilátor pro C ++ a shell (IDE), aby jej mohli pohodlně používat. Moje volba je code:: blocks pro Windows spolu s předinstalovaným řetězcem nástrojů MinGW. Můžete jej získat zde:

Stáhněte a nainstalujte jej.

Krok 4: Otestujte si IDE

Otestujte si IDE
Otestujte si IDE

Chcete -li vyzkoušet, zda je vše v pořádku, spusťte bloky kódů, klikněte na „vytvořit nový projekt“, zvolte „konzolovou aplikaci“, zvolte buď c nebo c ++, zadejte název projektu pokladny, v dalším okně ponechte výchozí nastavení nedotčená a klikněte na „dokončit.

Krok 5: Dokončete test

Dokončete test
Dokončete test

Poté klikněte na zelený trojúhelník na horním panelu IDE nebo použijte bod nabídky Build-> Run. Pokud šlo všechno dobře, měli byste vidět zprávu z vaší automaticky generované aplikace „Hello world“v černém okně „DOS“.

Pokud ne, znamená to, že IDE a kompilátor nepracují správně a budete muset prozkoumat, jak jej správně nastavit. Pravděpodobně budete muset stáhnout jinou verzi programovacích nástrojů nebo zkontrolovat jejich oprávnění ve vašem firewallu/antivirovém softwaru.

Krok 6: Vytvořte nový projekt

Vytvořit nový projekt
Vytvořit nový projekt
Vytvořit nový projekt
Vytvořit nový projekt
Vytvořit nový projekt
Vytvořit nový projekt
Vytvořit nový projekt
Vytvořit nový projekt

Nyní byste měli mít funkční sadu nástrojů programátora C/C ++ a rozbalené zdrojové kódy sunxi-tools ve složce c: / sunxitools / ve vašem počítači. Je čas sestavit projekt. Vytvořte nový projekt ve vašem IDE. Vyberte prostý projekt typu C (nikoli c ++) typu „konzolová aplikace“.

Ujistěte se, že vytváříte projekt ve složce c: / sunxitools / a nikoli na jiném místě. (EG codeblocks mají tendenci vytvářet podsložku se stejným názvem, jaký má projekt. Pokud jste tedy pojmenovali svůj projekt, řekněte „test“a zkuste jej umístit do c: / sunxitools \, můžete skončit s tím, že projekt zmizí to c: / sunxitools / test / pokud nejste dostatečně pozorní.) Nástroje Sunxi obsahují několik nástrojů, ale pro náš účel budeme potřebovat pouze jeden: takzvaný nástroj „fexc“.

Krok 7: Přidejte soubory do projektu

Přidat soubory do projektu
Přidat soubory do projektu

Přesně nástroj "fexc" je zodpovědný za převod souboru script.bin do textového formátu a za zpětný převod do binárního souboru. Je nezbytné, aby spustitelný soubor tohoto nástroje měl název „fexc.exe“, takže je dobré, pokud jste svůj projekt pojmenovali jako „fexc“. Můžete však použít jakýkoli jiný název projektu, protože spustitelný soubor můžete po kompilaci kdykoli přejmenovat, nebo můžete v horní rozbalovací nabídce zvolit „Projekt-> Vlastnosti“a v zobrazeném okně klikněte na kartu „Vytvořit cíle“, a upravte tam pole „Název_výstupního souboru“, abyste přepsali název spustitelného souboru.

K vašemu automaticky generovanému projektu byste měli přidat pouze pět zdrojových souborů:

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

a sedm hlavičkových souborů:

  • list.h (přesuňte jej z c: / sunxitools / include / složku do c: / sunxitools / složka)
  • fexc.h
  • skript.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • verze.h

Nezapomeňte z projektu vyloučit automaticky generovaný main.c, protože fexc.c již má v sobě funkci „int main“. (Pamatujte, že jakýkoli program by měl mít pouze jednu hlavní funkci?).

Všechny potřebné soubory zdrojového kódu jsou již v podsložce, kam jste rozbalili zdrojové kódy. Soubory záhlaví si zaslouží pár slov, kde je získat. "list.h" - je obvykle v podsložce "zahrnout" rozbalené sady zdrojových kódů. „version.h“- vytvořte si ho sami. Vložte řetězec jako:

#define VERZE „Win32“

Poté soubor uložte a zavřete. (Pokud chcete, můžete jej ozdobit #define's a #ifdef's.)

Pokud se nyní pokusíte zkompilovat projekt, bude si stěžovat na spoustu chyb a jeden chybějící soubor. Chyby jsou většinou způsobeny trochou přílišné volnosti stylu, k níž se dříve hlásili programátoři sunxi-tools, a chybějící soubor je závislostí, která není součástí balíčku zdrojového kódu. Pojďme se s tím vypořádat krok za krokem.

Krok 8: Nechte GCC dodržovat jazykový standard ISO C z roku 1999

Nechte GCC dodržovat jazykovou normu ISO C z roku 1999
Nechte GCC dodržovat jazykovou normu ISO C z roku 1999

Aby si kompilátor nestěžoval na příliš volný styl programování, nastavte standard kompilace „с99“. V kódových blocích přejděte do nabídky „Projekt -> Možnosti sestavení“a v „Nastavení kompilátoru -> Příznaky kompilátoru“zaškrtněte políčko „Nechat gcc dodržovat normu jazyka ISO C 1999“. Nebo můžete jednoduše přidat „-std = c99“do řetězce možností kompilátoru. Nyní, když se pokusíte zkompilovat projekt, by mělo začít mnoho chyb a vy jste jedna k jedné s chybějící závislostí.

Krok 9: Najděte chybějící závislost

Najděte chybějící závislost
Najděte chybějící závislost

Chybějící závislostí je soubor "mman.h" - záhlaví nějakého správce paměti Linuxu. Windows C nativně žádný takový soubor nemá, ale naštěstí existuje jeho port pro Windows. Přejděte na https://github.com/witwall/mman-win32 pro Windows. Stáhněte si snímek úložiště git.

Krok 10: Rozbalte Mman

Rozbalte Mman
Rozbalte Mman

Rozbalte soubory mman.c a mman.h a vložte je do složky c: / sunxitools \.

Krok 11: A přidejte je do projektu

A přidejte je do projektu
A přidejte je do projektu

Krok 12: Správná cesta

Správná cesta
Správná cesta

A v souboru raplece souboru „fex.c“:

#zahrnout

do

#include "mman.h"

V tomto kroku by si váš kompilátor neměl na nic stěžovat a jako výstup dostanete dlouhé čekání fexc.exe. Nebuďte šťastní příliš brzy. Nástroj stále není plně funkční. Můžete to zajistit dešifrováním nějakého platného souboru script.bin do textové podoby - souboru script.fex s následným zašifrováním souboru script.fex zpět do souboru script.bin. Můžete si všimnout, že velikost výsledného souboru script.bin se mírně liší od velikosti původního souboru script.bin. A pokud se pokusíte znovu dešifrovat výsledné, selže. S tímto script.bin nebude fungovat ani Orange PI. Abychom získali funkční nástroj, musíme vybít kódovou bombu, kterou někdo vložil do zdrojového kódu sunxi-tools. Bude to náš další krok.

Krok 13: Exorcismus

Zaříkání
Zaříkání

Chcete -li vybít kódovou bombu, otevřete soubor kódu fexc.c a najděte tam textový řetězec dalšího obsahu:

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

Stačí jej nahradit následujícím řetězcem:

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

Pokud ne zlé číslice „666“v prvním řetězci, myslel bych si, že kodér právě zapomněl použít příznak O_BINARY. Ale Číslo zvířete jeho záměry transparentně objasňuje. Jděte na to, jak je to důmyslné: kvůli jemnému rozdílu ve způsobu zpracování souborů ve Windows a Linuxu nemá bomba žádný účinek, když je nástroj kompilován a používán pod Linuxem. Při použití nástroje pod Windows to ale všechno zničí.

Poté, co byla bomba odzbrojena, můžete konečně kompilovat a bezpečně používat nástroj fexc na stolním počítači se systémem Windows.

Krok 14: POZNÁMKY

POZNÁMKY
POZNÁMKY

1) Chcete -li pohodlně používat nástroj fexc, měli byste získat dva dávkové soubory:

bin2fex.bat - a - fex2bin.bat.

Můžete je získat z nějaké faily fexc.exe build pro Windows, nebo je můžete zadat sami:

  • bin2fex.bat by měl obsahovat „fexc -I bin -O fex script.bin script.fex“
  • fex2bin.bat by měl obsahovat „fexc -O bin -I fex script.fex script.bin“

2) Pokud je obtížné najít správce mman pro Windows, lze se jeho použití vůbec vyhnout. Vyžaduje však mnohem více úprav souboru fexc.c a vyžaduje alespoň určité znalosti c. Pro vaši jistotu sdílím upravený zdrojový kód fexc ze sunxi-tools v1.4 bez závislosti na mman.h spolu se souborem projektu codeblocks a ukázkovým script.bin z nějakého oranžového pi. Můžete si stáhnout fexc_nomman.zip

3) Je možné, že v následujících verzích nástrojů sunxi přidají další závislosti. Neváhejte je najít na internetu a přidat je do svého kompilačního projektu.

5) Nakonec je zde předkompilovaná verze fexc.exe pro Win32:

fexc_nomman.zip

Pokud jste dostatečně líní, použijte ver. Mějte však na paměti, že nebude aktualizován, pokud/až budou k dispozici novější verze SunxiTools/Windows. Takže je lepší se naučit, jak je zkompilovat, než záviset na nějaké pevné binární sestavě, předpokládám.

4) „Orange PI“, „Code:: Blocks“, „Windows“, „Linux“, „Sunxi-Tools“, „Allwinner“atd.… Jsou ochranné známky příslušných vlastníků.

5) Pokud si kompilátor stěžuje, že nenašel funkce mman, jako:

nedefinovaný odkaz na '_imp_mmap'

uvědomte si, že definice milovníci vývojové komunity mman zapomněli, že kód lze kompilovat nejen jako knihovnu dll. Může to být také statická knihovna nebo samostatný kód, jaký zde máme. Chcete -li problém vyřešit, upravte soubor "mman.h" následujícím způsobem:

a) najděte řetězce:

#if definováno (MMAN_LIBRARY)

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

b) přidejte řetězec

#define MMANSHARED_EXPORT

těsně pod řetězci nalezenými v předchozím kroku

Doporučuje: