Sadržaj:

Orange PI HowTo: Sastavite Sunxi alat za Windows pod Windowsima: 14 koraka (sa slikama)
Orange PI HowTo: Sastavite Sunxi alat za Windows pod Windowsima: 14 koraka (sa slikama)

Video: Orange PI HowTo: Sastavite Sunxi alat za Windows pod Windowsima: 14 koraka (sa slikama)

Video: Orange PI HowTo: Sastavite Sunxi alat za Windows pod Windowsima: 14 koraka (sa slikama)
Video: CS50 2015 - Week 4, continued 2024, Juli
Anonim
Orange PI HowTo: Kompilirajte Sunxi alat za Windows pod Windowsima
Orange PI HowTo: Kompilirajte Sunxi alat za Windows pod Windowsima

PREDUSLOVI:

Trebat će vam

  1. Računar (desktop) sa operativnim sistemom Windows.
  2. Internet veza.
  3. Narandžasta PI ploča.

Posljednje nije obavezno, ali siguran sam da ga već imate. U suprotnom nećete čitati ove upute.

Kada kupite Orange PI single board računar, on ostaje samo komad mrtvog metala dok se pravilno ne konfigurira. A njegova glavna konfiguracijska datoteka: "script.bin" prvi je ključ koji ga oživljava. Ova datoteka se nalazi na particiji za pokretanje vaše SD kartice za pokretanje. Srećom po nas, u većini distribucija Linuxa sa službene web stranice (https://www.orangepi.org/downloadresources/) ova particija je FAT32 i može je lako vidjeti bilo koji Windows računar. To zaista pojednostavljuje stvari, jer još uvijek nema pouzdanog načina za pisanje na Linux ext2 particije ispod Windowsa.

Na našu nesreću, konfiguracijska datoteka script.bin ima binarni format potpuno neprikladan za ljudsko uređivanje. Potrebna je neka vrsta softverskog alata kako bi ga dešifrirali i kriptirali nakon što su izvršene potrebne izmjene. Takav skup alata postoji. To je zloglasni SUNXI-TOOLS. Zanimljivo je to što je namjera da radi pod Linuxom i moramo ili zadržati namjensku Linux mašinu samo za korištenje sunxi alata ili pronaći način kako ih kompajlirati za Windows.

Mogao sam ga jednostavno sastaviti i podijeliti izvršnu datoteku, ali nikad se ne zna bi li htjeli napraviti novo izdanje i trebat će vam nova kompilacija što je prije moguće. Stoga sam odlučio napraviti vodič kako sastaviti bitni alat iz izvora. Hajde da počnemo.

Korak 1: Preuzmite Sunxi-alate

Preuzmite Sunxi-alate
Preuzmite Sunxi-alate
Preuzmite Sunxi-alate
Preuzmite Sunxi-alate

Nabavite najnoviju (ili neophodnu) verziju izvornog koda sunxi-alata. Idite na URL: https://github.com/linux-sunxi/sunxi-tools/releases i odaberite preuzimanje kao zip arhivu.

Korak 2: Raspakirajte izvorni kod

Raspakirajte izvorni kod
Raspakirajte izvorni kod

Kada se preuzimanje završi, raspakirajte izvorni kod u mapu po vašem izboru. (dalje ću pretpostaviti da je ova mapa c: / sunxitools \, pa zamijenite ovu putanju svojom stazom).

Korak 3: Preuzmite Code:: blocks

Preuzmite Code:: Blokovi
Preuzmite Code:: Blokovi

Ako imate instaliranu kopiju nekog operativnog c ++ kompajlera za Windows. i ako znate kako ga koristiti, možete direktno preći na korak 3. Drugi bi trebali nabaviti odgovarajući c ++ kompajler i ljusku (IDE) za udobno korištenje. Moj izbor je code:: Blocks za Windows zajedno s unaprijed instaliranim MinGW lancem alata. Možete ga preuzeti odavde:

Preuzmite i instalirajte.

Korak 4: Testirajte svoj IDE

Testirajte svoj IDE
Testirajte svoj IDE

Da biste provjerili je li sve u redu, pokrenite blokove kodova, kliknite "kreiraj novi projekt", odaberite "konzola aplikacija", odaberite c ili c ++, upišite naslov projekta odjave, zadržite zadane vrijednosti netaknutima u sljedećem prozoru i kliknite "završi" ".

Korak 5: Dovršite test

Complete Test
Complete Test

Zatim kliknite zeleni trokut na gornjoj ploči IDE-a ili upotrijebite Build-> Run menu menu point. Ako su stvari krenule kako treba, trebali biste vidjeti poruku iz vaše automatski generirane aplikacije "Hello world" u crnom "DOS" prozoru.

Ako ne, to znači da IDE i kompajler ne rade ispravno i morat ćete istražiti kako to ispravno postaviti. Vjerovatno ćete morati preuzeti drugu verziju programskih alata ili provjeriti njihove dozvole u svom zaštitnom zidu/antivirusnom softveru.

Korak 6: Kreirajte novi projekat

Kreirajte novi projekat
Kreirajte novi projekat
Kreirajte novi projekat
Kreirajte novi projekat
Kreirajte novi projekat
Kreirajte novi projekat
Kreirajte novi projekat
Kreirajte novi projekat

Sada biste na računaru trebali imati operativan komplet alata za programere C/C ++ i raspakovane izvorne kodove sunxi-alata u fascikli c: / sunxitools \. Vrijeme je za sastavljanje projekta. Kreirajte novi projekat u svom IDE -u. Odaberite običan C (ne c ++) projekt tipa "konzolna aplikacija".

Provjerite stvarate li projekt u mapi c: / sunxitools \, a ne na nekom drugom mjestu. (EG kodni blokovi imaju tendenciju da naprave podmapu s istim imenom kao i projekt. Dakle, ako ste nazvali svoj projekt, recite "test" i pokušajte ga postaviti u c: / sunxitools \, možda ćete završiti s tim da projekt nestane u c: / sunxitools / test / ako niste dovoljno pažljivi.) Sunxi alati sadrže nekoliko pomoćnih programa, ali za našu svrhu trebat će nam samo jedan: takozvani "fexc" uslužni program.

Korak 7: Dodajte datoteke u Project

Dodajte datoteke u Project
Dodajte datoteke u Project

Upravo je uslužni program "fexc" odgovoran za pretvaranje script.bin u tekstualni format i za povratnu konverziju u binarni. Bitno je da izvršna datoteka ovog uslužnog programa ima naziv "fexc.exe", pa je dobro ako ste svom projektu dali ime "fexc". Međutim, možete koristiti bilo koji drugi naziv projekta, budući da izvršnu datoteku uvijek možete preimenovati nakon kompilacije, ili možete izabrati "Projekt-> Svojstva" iz gornjeg padajućeg izbornika i u prozoru koji se pojavi kliknite karticu "Izradi ciljeve", i uredite polje "Naziv izlazne datoteke" da biste nadjačali ime izvršne datoteke.

U svoj automatski generirani projekt trebali biste dodati samo pet izvornih datoteka:

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

i sedam datoteka zaglavlja:

  • list.h (premjestite ga iz c: / sunxitools / include / folder u c: / sunxitools / folder)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Svakako isključite autogenerirani main.c iz projekta, jer fexc.c već ima funkciju "int main" u sebi. (Zapamtite da bi svaki program trebao imati samo jednu glavnu funkciju?).

Sve potrebne datoteke izvornog koda već su u podmapi, u koju ste raspakirali izvorne kodove. Zaglavlje datoteke zaslužuje par riječi, gdje ih dobiti. "list.h" - obično se nalazi u podmapi "include" postavljenog raspakovanog izvornog koda. "version.h" - samo ga stvorite sami. Stavite niz poput:

#define VERZIJA "Win32"

Zatim spremite i zatvorite datoteku. (Možete ga ukrasiti s #define i #ifdef ako želite.)

Ako sada pokušate sastaviti projekt, žalit će se na mnogo grešaka i jednu datoteku koja nedostaje. Greške su uglavnom posljedica malo pretjerane slobode stilova, koje su koristili programeri sunxi-alata, a datoteka koja nedostaje je ovisnost koja nije uključena u paket izvornog koda. Riješimo ovo korak po korak.

Korak 8: Neka Gcc slijedi jezički standard ISO C iz 1999. godine

Neka Gcc slijedi ISO C jezički standard iz 1999. godine
Neka Gcc slijedi ISO C jezički standard iz 1999. godine

Kako se kompajler ne bi žalio na previše slobodan stil programiranja, postavite "s99" standard kompilacije. U blokovima kodova idite na izbornik "Project -> Build Options" i u "Compiler Settings -> Compiler Flags" potvrdite okvir "Neka gcc prati 1999 ISO C jezički standard". Ili možete jednostavno dodati "-std = c99" u niz opcija kompajlera. Sada, ako pokušate kompajlirati projekt, te tone grešaka bi trebale nestati i vi ste jedan na jedan sa zavisnošću koja nedostaje.

Korak 9: Pronađite nedostajuću zavisnost

Pronađite nedostajuću ovisnost
Pronađite nedostajuću ovisnost

Nedostajuća ovisnost je datoteka "mman.h" - zaglavlje neke vrste linux upravljača memorijom. Windows C izvorno nema takvu datoteku, ali na sreću postoji Windows port. Idite na https://github.com/witwall/mman-win32 za Windows. Preuzmite snimak git spremišta.

Korak 10: Raspakujte Mman

Raspakujte Mman
Raspakujte Mman

Raspakujte datoteke mman.c i mman.h, postavite ih u fasciklu c: / sunxitools \.

Korak 11: Dodajte ih u projekat

I dodajte ih projektu
I dodajte ih projektu

Korak 12: Tačan put

Tačan put
Tačan put

I u datoteci "fex.c" raplece linija:

#include

do

#include "mman.h"

U ovom koraku vaš kompajler se ne bi trebao žaliti i dobit ćete dugo čekanje fexc.exe kao izlaz. Ne budi sretan prerano. Uslužni program još uvijek nije u potpunosti funkcionalan. To možete osigurati dešifriranjem neke valjane datoteke script.bin u tekstualni obrazac - datotekom script.fex, a time i šifriranjem datoteke script.fex natrag u script.bin. Možda ćete primijetiti da se veličina rezultirajućeg script.bin neznatno razlikuje od veličine izvornog script.bin. Ako pokušate dešifrirati rezultat još jednom, neće uspjeti. Niti Orange PI neće raditi s ovim script.bin. Da bismo dobili funkcionalni uslužni program moramo isprazniti kodnu bombu koju je neko stavio u izvorni kod sunxi-alata. To će biti naš sljedeći korak.

Korak 13: Egzorcizam

Egzorcizam
Egzorcizam

Da biste ispraznili kodnu bombu, otvorite datoteku koda fexc.c i tamo pronađite tekstualni niz sljedećeg sadržaja:

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

Samo ga zamijenite sljedećim nizom:

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

Da nisu zle brojke "666" u prvom nizu, pomislio bih da je koder upravo zaboravio upotrijebiti zastavu O_BINARY. No, broj zvijeri transparentno razjašnjava njegove namjere. Zamislite, koliko je to genijalno: zbog suptilne razlike u načinu na koji se datoteke obrađuju u Windowsima i Linuxu bomba nema efekta kada se uslužni program kompajlira i koristi pod Linuxom. Ali sve uništava kada se uslužni program koristi pod Windows -om.

Nakon što je bomba razoružana, konačno možete sastaviti i sigurno koristiti uslužni program fexc na svom Windows računaru.

Korak 14: NAPOMENE

NAPOMENE
NAPOMENE

1) Da biste udobno koristili uslužni program fexc, trebali biste nabaviti dvije paketne datoteke:

bin2fex.bat - i - fex2bin.bat.

Možete ih nabaviti iz neke poznate verzije fexc.exe za Windows tamo, ili ih možete sami upisati:

  • bin2fex.bat bi trebao sadržavati "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat bi trebao sadržavati "fexc -O bin -I fex script.fex script.bin"

2) Ako je teško pronaći mman manager za Windows, uopće možete izbjeći njegovu upotrebu. Međutim, potrebno je mnogo više uređivanja datoteke fexc.c i zahtijeva barem malo znanja o c. Radi vaše udobnosti, dijelim uređeni izvorni kod fexc-a iz sunxi-tools v1.4 bez ovisnosti o mman.h zajedno sa datotekom projekta codeblocks i uzorkom script.bin s nekog narančastog pi. Možete preuzeti fexc_nomman.zip

3) Moguće je da će u slijedećim verzijama sunxi-alata dodati još neke zavisnosti. Slobodno ih pronađite na internetu i dodajte u svoj kompilacijski projekt.

5) Na kraju, ovdje je predkompilirana verzija fexc.exe za Win32:

fexc_nomman.zip

Ako ste dovoljno lijeni, slobodno upotrijebite ver. Međutim, pazite da se neće ažurirati ako/kada će biti dostupne novije verzije SunxiTools/Windows. Zato je bolje naučiti kako ih sastaviti nego ovisiti o nekoj fiksnoj binarnoj verziji, pretpostavljam.

4) "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", itd … odgovarajući su zaštitni znakovi njihovih vlasnika.

5) Ako se kompajler žali da nije pronašao mman funkcije, poput:

nedefinisana referenca na '_imp_mmap'

imajte na umu da su ljubitelji definicije razvojne zajednice mman zaboravili da se kôd može sastaviti ne samo kao dll biblioteka. To može biti i statička biblioteka ili samostalan kod kakav imamo ovdje. Da biste riješili problem, uredite datoteku "mman.h" na sljedeći način:

a) pronađite nizove:

#if definirano (MMAN_LIBRARY)

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

b) dodajte niz

#define MMANSHARED_EXPORT

odmah ispod niza pronađenih u prethodnom koraku

Preporučuje se: