Съдържание:

Orange PI HowTo: Компилирайте Sunxi Tool за Windows под Windows: 14 стъпки (със снимки)
Orange PI HowTo: Компилирайте Sunxi Tool за Windows под Windows: 14 стъпки (със снимки)

Видео: Orange PI HowTo: Компилирайте Sunxi Tool за Windows под Windows: 14 стъпки (със снимки)

Видео: Orange PI HowTo: Компилирайте Sunxi Tool за Windows под Windows: 14 стъпки (със снимки)
Видео: Orange Pi Zero 2024, Ноември
Anonim
Orange PI HowTo: Компилирайте Sunxi Tool за Windows под Windows
Orange PI HowTo: Компилирайте Sunxi Tool за Windows под Windows

ПРЕДПОСТАВКИ:

Ще имаш нужда

  1. (Настолен) компютър с Windows.
  2. Интернет връзка.
  3. Оранжева PI платка.

Последното е по избор, но съм сигурен, че вече го имате. В противен случай няма да прочетете тази инструкция.

Когато купувате компютъра с един борд Orange PI, той остава само парче мъртъв метал, докато не бъде конфигуриран правилно. А основният му конфигурационен файл: "script.bin" е първият ключ, който го оживява. Този файл се намира в зареждащия дял на Вашата стартираща SD карта. И за наш късмет, в повечето дистрибуции на Linux от официалния сайт (https://www.orangepi.org/downloadresources/) този дял е FAT32 и може лесно да се види от всеки компютър с Windows. Това наистина опростява нещата, тъй като все още няма надежден начин за писане в дяловете ext2 на Linux под Windows.

За наш късмет, конфигурационният файл script.bin има двоичен формат, напълно неприятен за редактиране от хора. Човек се нуждае от някакъв софтуерен инструмент, за да го декриптира и да криптира обратно, след като са направени необходимите модификации. И такъв набор от инструменти наистина съществува. Това е скандален SUNXI-TOOLS. Мухът в мехлема е, че той е предназначен да работи под Linux и ние или трябва да запазим специална Linux-машина само за да използваме sunxi-инструментите, или да намерим начин как да ги компилираме за windows.

Бих могъл просто да го компилирам и да споделя изпълнимия файл, но човек никога не знае дали биха искали да направят нова версия и ще ви трябва нова компилация възможно най -скоро. Затова реших да направя ръководство как да компилирам основния инструмент от източниците. Да започваме.

Стъпка 1: Изтеглете Sunxi-tools

Изтеглете Sunxi-инструменти
Изтеглете Sunxi-инструменти
Изтеглете Sunxi-инструменти
Изтеглете Sunxi-инструменти

Вземете последната (или необходима) версия на изходния код на sunxi-tools. Отидете на URL адреса: https://github.com/linux-sunxi/sunxi-tools/releases и изберете да изтеглите като zip архив.

Стъпка 2: Разархивирайте изходния код

Разархивирайте изходния код
Разархивирайте изходния код

След като изтеглянето приключи, разархивирайте изходния код в избраната от вас папка. (по -нататък ще приема, че тази папка е c: / sunxitools \, така че заменете този път със своя собствен път).

Стъпка 3: Изтеглете Code:: Blocks

Изтеглете Code:: Blocks
Изтеглете Code:: Blocks

Ако имате инсталирано копие на някакъв работещ c ++ компилатор за windows. и ако знаете как да го използвате, можете директно да преминете към стъпка 3. Други трябва да получат подходящ компилатор на c ++ и черупка (IDE), за да го използват удобно. Моят избор е код:: блокове за Windows заедно с предварително инсталирана MinGW инструментарна верига. Можете да го получите от тук:

Изтеглете и инсталирайте.

Стъпка 4: Тествайте вашата IDE

Тествайте вашата IDE
Тествайте вашата IDE

За да проверите дали нещата вървят добре, стартирайте кодови блокове, щракнете върху „създаване на нов проект“, изберете „конзолно приложение“, изберете или c или c ++, въведете заглавието на проекта за плащане, оставете настройките по подразбиране недокоснати в следващия прозорец и щракнете върху „завърши“.

Стъпка 5: Попълнете теста

Пълен тест
Пълен тест

След това щракнете върху зелен триъгълник в горния панел на IDE или използвайте менюто Build-> Run. Ако нещата вървят както трябва, трябва да видите съобщение от вашето автоматично генерирано приложение "Hello world" в черния прозорец "DOS".

Ако не, това означава, че IDE и компилаторът не работят правилно и ще трябва да проучите как да го настроите правилно. Вероятно ще трябва да изтеглите друга версия на инструментите за програмиране или да проверите техните разрешения във вашата защитна стена/антивирусен софтуер.

Стъпка 6: Създайте нов проект

Създайте нов проект
Създайте нов проект
Създайте нов проект
Създайте нов проект
Създайте нов проект
Създайте нов проект
Създайте нов проект
Създайте нов проект

Сега трябва да имате работещ набор от инструменти за програмист на C/C ++ и разопакованите изходни кодове на sunxi-tools в папката c: / sunxitools / на вашия компютър. Време е да съберем проект. Създайте нов проект във вашата IDE. Изберете обикновения проект C (не c ++) от типа "конзолно приложение".

Уверете се, че създавате проект в папката c: / sunxitools \, а не на друго място. (Кодовите блокове на EG обикновено създават подпапка със същото име като проекта. Така че, ако сте кръстили проекта си, кажете „тест“и се опитайте да го поставите в c: / sunxitools \, може да завършите проекта към c: / sunxitools / test / ако не сте достатъчно внимателни.) Sunxi-инструментите съдържат няколко помощни програми, но за нашата цел ще ни трябва само една: т.нар. "fexc" помощна програма.

Стъпка 7: Добавяне на файлове към Project

Добавяне на файлове към Project
Добавяне на файлове към Project

Точно помощната програма "fexc" е отговорна за преобразуването на script.bin в текстов формат и за обратното преобразуване в двоичен. Важно е изпълнимият файл на тази помощна програма да има името "fexc.exe", така че е добре, ако сте кръстили проекта си като "fexc". Можете обаче да използвате всяко друго име на проекта, тъй като винаги можете да преименувате изпълнимия файл след компилацията или или можете да изберете „Проект-> Свойства“от горното падащо меню и в появилия се прозорец щракнете върху раздела „Създаване на цели“, и редактирайте там полето „Output filename“, за да замените изпълнимия име.

Към вашия автоматично генериран проект трябва да добавите само пет изходни файла:

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

и седем заглавни файла:

  • list.h (преместете го от c: / sunxitools / include / папка в c: / sunxitools / папка)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • версия.h

Не забравяйте да изключите автоматично генерирания main.c от проекта, защото fexc.c вече има функцията "int main" в него. (Не забравяйте, че всяка програма трябва да има само една основна функция?).

Всички необходими файлове с изходния код вече са в подпапката, където сте разопаковали изходните кодове. Заглавните файлове заслужават чифт думи, откъде да ги вземете. "list.h" - обикновено се намира в подпапката "include" на набора разопаковани изходни кодове. "version.h" - просто го създайте сами. Поставете низ като:

#дефинирайте ВЕРСИЯ "Win32"

След това запишете и затворете файла. (Можете да го украсите с #define и #ifdef, ако искате.)

Ако сега се опитате да компилирате проекта, той ще се оплаче от много грешки и един липсващ файл. Грешките се дължат най-вече на малко прекомерна свобода на стила, използвани от програмистите на sunxi-tools, а липсващият файл е зависимостта, която не е включена в пакета на изходния код. Нека се справим с тази стъпка по стъпка.

Стъпка 8: Накарайте Gcc да следва езиковия стандарт ISO C от 1999 г

Накарайте Gcc да следва езиковия стандарт ISO C от 1999 г
Накарайте Gcc да следва езиковия стандарт ISO C от 1999 г

За да не се оплаква компилаторът, твърде свободният стил на програмиране зададе стандарт „с99“на компилацията. В кодовите блокове отидете в менюто "Проект -> Опции за изграждане" и в "Настройки на компилатора -> Флагове на компилатора" поставете отметка в квадратчето "Нека gcc следва 1999 езиков стандарт ISO C". Или можете просто да добавите „-std = c99“към Вашия низ от опции за компилатор. Сега, ако се опитате да компилирате проекта, тези тонове грешки трябва да бъдат преодолени и Вие сте един към един с липсващата зависимост.

Стъпка 9: Намерете липсващата зависимост

Намерете липсващата зависимост
Намерете липсващата зависимост

Липсващата зависимост е файл "mman.h" - заглавката на някакъв вид мениджър на памет на Linux. Windows C първоначално няма такъв файл, но за щастие има негов порт на Windows. Отидете на https://github.com/witwall/mman-win32 за windows. Изтеглете моментната снимка на git хранилището.

Стъпка 10: Разопаковайте Mman

Разопаковайте Mman
Разопаковайте Mman

Разопаковайте файловете mman.c и mman.h, поставете ги в папката c: / sunxitools \.

Стъпка 11: И ги добавете към проекта

И ги добавете към проекта
И ги добавете към проекта

Стъпка 12: Правилен път

Правилен път
Правилен път

И във файла "fex.c" raplece ред:

#включва

към

#включва "mman.h"

На тази стъпка Вашият компилатор не трябва да се оплаква от нищо и ще получите дълго изчакване fexc.exe като изход. Не се радвайте твърде рано. Помощната програма все още не е напълно функционална. Можете да се уверите в това, като декриптирате някой валиден файл script.bin в текстовата форма - файл script.fex с последващо шифроване на файла script.fex обратно в script.bin. Може да забележите, че размерът на получения скрипт.bin се различава леко от размера на оригиналния скрипт.bin. И ако се опитате да декриптирате полученото отново, това ще се провали. Нито Orange PI няма да работи с този script.bin. За да получим функционалната помощна програма, трябва да изхвърлим кодова бомба, която някой е поставил в изходния код на sunxi-tools. Това ще бъде следващата ни стъпка.

Стъпка 13: Екзорсизъм

Екзорцизъм
Екзорцизъм

За да изхвърлите кодовата бомба, отворете кодовия файл fexc.c и намерете там текстов низ със следното съдържание:

else if ((out = open (име на файл, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Просто го заменете със следния низ:

else if ((out = open (име на файл, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Ако не злите цифри "666" в първия низ бих си помислил, че кодерът току -що е забравил да използва флага O_BINARY. Но „Числото на звяра“изяснява прозрачно намеренията му. Вижте колко е гениално: поради фината разлика в начина, по който файловете се обработват в Windows и Linux, бомбата няма ефект, когато помощната програма се компилира и използва под Linux. Но това разрушава всичко, когато помощната програма се използва под Windows.

След като бомбата е дезактивирана, най -накрая можете да компилирате и безопасно да използвате помощната програма fexc на вашия настолен компютър с Windows.

Стъпка 14: ЗАБЕЛЕЖКИ

ЗАБЕЛЕЖКИ
ЗАБЕЛЕЖКИ

1) За да използвате удобно помощната програма fexc, трябва да получите два пакетни файла:

bin2fex.bat - и - fex2bin.bat.

Можете да ги получите от някоя фалшива компилация fexc.exe за Windows там или можете да ги напишете сами:

  • bin2fex.bat трябва да съдържа "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat трябва да съдържа "fexc -O bin -I fex script.fex script.bin"

2) Ако е трудно да се намери mman manager за Windows, може изобщо да се избегне използването му. Въпреки това отнема много повече редактиране на файла fexc.c и изисква поне известни познания за c. За ваше улеснение споделям редактирания изходен код на fexc от sunxi-tools v1.4, свободен от зависимостта към mman.h, заедно с проектния файл с кодови блокове и с примерен script.bin от някои оранжеви пи. Можете да изтеглите fexc_nomman.zip

3) Възможно е в последващи версии на sunxi-инструменти да добавят още някои зависимости. Чувствайте се свободни да ги намерите в интернет и да ги добавите към вашия компилационен проект.

5) И накрая е предварително компилираната версия на fexc.exe за Win32:

fexc_nomman.zip

Ако сте достатъчно мързеливи, не се колебайте да използвате вер. Внимавайте обаче, че няма да се актуализира, ако/кога ще бъдат налични по -новите версии на SunxiTools/Windows. Така че е по -добре да се научите как да ги компилирате, отколкото да разчитате на някаква фиксирана двоична версия, предполагам.

4) „Orange PI“, „Code:: Blocks“, „Windows“, „Linux“, „Sunxi-Tools“, „Allwinner“и т.н … са съответните търговски марки на съответните им собственици.

5) Ако компилаторът ви се оплаква, че не намира функции на mman, като:

неопределена препратка към '_imp_mmap'

имайте предвид, че дефинираните любители на общността за развитие на mman са забравили, че кодът може да бъде компилиран не само като dll библиотека. Това може да бъде и статична библиотека или самостоятелен код, както имаме тук. За да разрешите проблема, редактирайте файла "mman.h", както следва:

а) намерете низовете:

#ако е дефинирано (MMAN_LIBRARY)

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

б) добавете низ

#дефинирайте MMANSHARED_EXPORT

точно под низовете, намерени в предишната стъпка

Препоръчано: