Mundarija:

Orange PI HowTo: Windows ostida Windows uchun Sunxi vositasini kompilyatsiya qilish: 14 qadam (rasmlar bilan)
Orange PI HowTo: Windows ostida Windows uchun Sunxi vositasini kompilyatsiya qilish: 14 qadam (rasmlar bilan)

Video: Orange PI HowTo: Windows ostida Windows uchun Sunxi vositasini kompilyatsiya qilish: 14 qadam (rasmlar bilan)

Video: Orange PI HowTo: Windows ostida Windows uchun Sunxi vositasini kompilyatsiya qilish: 14 qadam (rasmlar bilan)
Video: Переустановка Windows 10, без использования загрузочных носителей. Сброс Windows 10 2024, Noyabr
Anonim
Orange PI HowTo: Windows ostida Windows uchun Sunxi vositasini kompilyatsiya qiling
Orange PI HowTo: Windows ostida Windows uchun Sunxi vositasini kompilyatsiya qiling

TALABLAR:

Sizga kerak bo'ladi

  1. Windows bilan ishlaydigan (ish stoli) kompyuter.
  2. Internetga ulanish.
  3. To'q rangli PI kartasi.

Oxirgi variant ixtiyoriy, lekin aminmanki, sizda allaqachon bor. Aks holda, siz buni o'qiy olmaysiz.

Orange PI bitta taxtali kompyuterni sotib olganingizda, u to'g'ri konfiguratsiya qilinmaguncha o'lik metalning bir bo'lagida qoladi. Va uning asosiy konfiguratsiya fayli: "script.bin" - uni jonlantirish uchun birinchi kalit. Bu fayl sizning yuklanadigan SD -kartangiz yuklash qismida joylashgan. Yaxshiyamki, biz Linux tarqatishining ko'p qismida rasmiy saytdan (https://www.orangepi.org/downloadresources/) FAT32 bo'lib, uni Windows -ning istalgan kompyuterida ko'rish mumkin. Bu, albatta, soddalashtiradi, chunki Windows ostidan Linux ext2 bo'limlariga yozishning ishonchli usuli hali yo'q.

Baxtsizlikdan, script.bin konfiguratsiya fayli ikkilik formatga ega bo'lib, inson tomonidan tahrir qilinmaydi. Kerakli o'zgartirishlar kiritilgandan so'ng, shifrni ochish va qaytarish uchun qandaydir dasturiy vosita kerak bo'ladi. Va bunday asboblar to'plami mavjud. Bu mashhur SUNXI-TOOLS. Malhamning asosiy maqsadi shundaki, u Linux ostida ishlaydi va biz faqat sunxi asboblaridan foydalanish uchun maxsus Linux-mashinani saqlashimiz yoki ularni derazalar uchun kompilyatsiya qilish yo'lini topishimiz kerak.

Men uni kompilyatsiya qilishim va bajariladigan faylni bo'lishishim mumkin edi, lekin ular yangi versiya chiqarishni xohlayaptimi yoki yo'qligini hech kim bilmaydi va sizga tez orada yangi kompilyatsiya kerak bo'ladi. Shuning uchun men manbadan asosiy vositani qanday yig'ish bo'yicha ko'rsatma berishga qaror qildim. Qani boshladik.

1-qadam: Sunxi asboblarini yuklab oling

Sunxi asboblarini yuklab oling
Sunxi asboblarini yuklab oling
Sunxi asboblarini yuklab oling
Sunxi asboblarini yuklab oling

Quyidagi manzilga o'ting:

2 -qadam: Kod kodini oching

Manba kodini oching
Manba kodini oching

Yuklab olish tugagandan so'ng, siz tanlagan papkaga manba kodini oching. (bundan keyin men bu papkani c: / sunxitools / deb hisoblayman, shuning uchun bu yo'lni o'z yo'lingiz bilan almashtiring).

3 -qadam: Kodni yuklab oling:: bloklari

Kodni yuklab olish:: bloklar
Kodni yuklab olish:: bloklar

Agar sizda Windows uchun operatsion c ++ kompilyatorining nusxasi o'rnatilgan bo'lsa. Agar siz uni qanday ishlatishni bilsangiz, 3 -bosqichga o'tishingiz mumkin. Boshqalar uni qulay ishlatish uchun tegishli c ++ kompilyatorini va qobig'ini (IDE) olishlari kerak. Mening tanlovim Windows uchun kod:: bloklar va oldindan o'rnatilgan MinGW asboblar zanjiri. Siz uni bu erdan olishingiz mumkin:

Yuklab oling va o'rnating.

4 -qadam: IDE -ni sinab ko'ring

IDE -ni sinab ko'ring
IDE -ni sinab ko'ring

Ishlarning to'g'riligini tekshirish uchun kod bloklarini ishga tushiring, "yangi loyiha yaratish" tugmasini bosing, "konsolli dastur" ni tanlang, c yoki c ++ ni tanlang, hisob -kitob loyihasining sarlavhasini kiriting, keyingi oynada ko'rsatuvlarni tegmagan holda saqlang va "tugatish" tugmasini bosing. ".

5 -qadam: To'liq test

To'liq test
To'liq test

Keyin IDE yuqori panelidagi yashil uchburchakni bosing yoki Build-> Run menyusidan foydalaning. Agar ishlar to'g'ri ketayotgan bo'lsa, siz "DOS" qora oynasida avtomatik tarzda yaratilgan "Salom dunyo" ilovasidan xabarni ko'rishingiz kerak.

Agar yo'q bo'lsa, bu IDE va kompilyator to'g'ri ishlamayotganligini anglatadi va siz uni qanday to'g'ri sozlashni o'rganishingiz kerak bo'ladi. Ehtimol, siz dasturiy vositalarning boshqa versiyasini yuklab olishingiz yoki xavfsizlik devori/antivirus dasturida ularning ruxsatini tekshirishingiz kerak bo'ladi.

6 -qadam: Yangi loyiha yaratish

Yangi loyiha yaratish
Yangi loyiha yaratish
Yangi loyiha yaratish
Yangi loyiha yaratish
Yangi loyiha yaratish
Yangi loyiha yaratish
Yangi loyiha yaratish
Yangi loyiha yaratish

Endi sizda C/C ++ dasturchi asboblar to'plami va ochilmagan sunxi-asboblar manba kodlari c: / sunxitools / papkasida bo'lishi kerak. Loyihani yig'ish vaqti keldi. IDE -da yangi loyiha yarating. "Konsolli ilova" turidagi oddiy C (c ++ emas) loyihasini tanlang.

Siz loyihani boshqa joyda emas, balki c: / sunxitools / papkasida yaratayotganingizga ishonch hosil qiling. (EG kod bloklari odatda loyiha bilan bir xil nomdagi kichik papka yaratadi. Agar siz o'z loyihangizni nomlagan bo'lsangiz, "test" deb ayting va uni c: / sunxitools / ga joylashtirishga urinib ko'ring, siz loyihani tugatib qo'yishingiz mumkin. to c: / sunxitools / test / agar siz etarlicha e'tiborli bo'lmasangiz.) Sunxi asboblari bir nechta yordamchi dasturlarni o'z ichiga oladi, lekin bizning maqsadimiz uchun faqat bitta kerak bo'ladi: "fexc" yordamchi dasturi.

7 -qadam: Fayllarni loyihaga qo'shing

Loyihaga fayllarni qo'shish
Loyihaga fayllarni qo'shish

To'liq "fexc" yordam dasturi script.bin -ni matn formatiga va orqaga ikkilikka o'tkazish uchun javobgardir. Ushbu yordamchi dasturning "fexc.exe" nomi bo'lishi juda muhim, shuning uchun agar siz loyihangizni "fexc" deb nomlagan bo'lsangiz yaxshi bo'ladi. Loyihaning boshqa nomini ishlatishingiz mumkin, chunki siz har doim kompilyatsiya qilinganidan keyin bajariladigan fayl nomini o'zgartirishingiz mumkin yoki yuqoridagi ochilgan menyudan "Project-> Properties" ni tanlashingiz mumkin va paydo bo'ladigan oynada "Maqsadlarni yaratish" yorlig'ini bosing, va bajariladigan nomni bekor qilish uchun "Chiqish fayl nomi" maydonini tahrir qiling.

Avtomatik ishlab chiqarilgan loyihangizga faqat beshta manba faylini qo'shishingiz kerak:

  • fexc.c
  • skript.c
  • skript_bin.c
  • skript_fex.c
  • skript_uboot.c

va etti nomli fayllar:

  • list.h (uni c: / sunxitools / include / papkasidan c: / sunxitools / papkasiga o'tkazing)
  • fexc.h
  • skript.h
  • skript_bin.h
  • skript_fex.h
  • skript_uboot.h
  • versiya.h

Loyihadan autogenerated main.c ni chiqarib qo'yganingizga ishonch hosil qiling, chunki fexc.c allaqachon "int main" funktsiyasiga ega. (Esda tutingki, har qanday dastur faqat bitta asosiy funktsiyaga ega bo'lishi kerak?).

Barcha kerakli manba kodli fayllar manba kodlarini ochgan pastki papkada joylashgan. Sarlavha fayllari bir juft so'zga loyiq, ularni qaerdan olish kerak. "list.h" - odatda ochilmagan manba kodlari to'plamining "qo'shish" pastki papkasida. "version.h" - uni o'zingiz yarating. U erga quyidagi qatorni qo'ying:

#Win32 versiyasini aniqlang

Keyin faylni saqlang va yoping. (Agar xohlasangiz, uni #define va #ifdef bilan bezashingiz mumkin.)

Agar siz hozir loyihani kompilyatsiya qilmoqchi bo'lsangiz, u ko'plab xatolar va bitta etishmayotgan fayl haqida shikoyat qiladi. Xatolar, asosan, uslubning haddan tashqari erkinligi, dasturchilar tomonidan qo'llaniladigan sunxi-asboblar va etishmayotgan fayl manba kodi paketiga kiritilmaganligi bilan bog'liq. Keling, bu muammoni bosqichma -bosqich hal qilaylik.

8 -qadam: Gcc 1999 ISO C til standartiga rioya qiling

Gcc 1999 ISO C til standartiga rioya qiling
Gcc 1999 ISO C til standartiga rioya qiling

Kompilyator shikoyat qilmasligi uchun, juda erkin dasturlash uslubi kompilyatsiya standarti "s99" ni o'rnatadi. Kod bloklarida "Loyiha -> Qurilish parametrlari" menyusiga o'ting va "Tuzuvchi sozlamalari -> Kompilyator bayroqlari" da "GCC ISO C tilining 1999 standartiga amal qilsin" katagiga belgi qo'ying. Yoki siz "-std = c99" ni kompilyator parametrlar qatoriga qo'shishingiz mumkin. Endi siz loyihani kompilyatsiya qilishga urinib ko'rsangiz, bu tonna xatolar yo'qolishi kerak va siz bir-biringizga bog'liq bo'lmagansiz.

9 -qadam: yo'qolgan qaramlikni toping

Yo'qolgan qaramlikni toping
Yo'qolgan qaramlikni toping

Yo'qolgan qaramlik - "mman.h" fayli - Linux xotira menejerining bir turi. Windows C -da bunday fayl yo'q, lekin xayriyatki, uning Windows porti bor. Windows uchun https://github.com/witwall/mman-win32 saytiga o'ting. Git omborining rasmini yuklab oling.

10 -qadam: Mmanni oching

Mmanni oching
Mmanni oching

Mman.c va mman.h fayllarini oching, ularni c: / sunxitools / jildiga joylashtiring.

11 -qadam: Va ularni loyihaga qo'shing

Va ularni loyihaga qo'shing
Va ularni loyihaga qo'shing

12 -qadam: to'g'ri yo'l

To'g'ri yo'l
To'g'ri yo'l

Va "fex.c" faylida raplece liniyasi:

#qo'shing

uchun

#"mman.h" ni qo'shing

Ushbu bosqichda sizning kompilyatoringiz hech narsadan shikoyat qilmasligi kerak va siz fexc.exe faylini uzoq vaqt kutasiz. Erta baxtli bo'lmang. Yordamchi dastur hali to'liq ishlamayapti. Siz buni script.fex faylidagi skript.bin faylining matnli formasiga shifrini ochish orqali ta'minlay olasiz, natijada script.fex faylini yana skript.binga shifrlaysiz. Olingan script.bin hajmi asl skript.bin hajmidan biroz farq qilishini e'tiborga olishingiz mumkin. Va agar siz natijani yana bir marta shifrdan chiqarishga urinib ko'rsangiz, bu muvaffaqiyatsiz bo'ladi. Orange PI ham bu script.bin bilan ishlamaydi. Funktsional yordam dasturini olish uchun biz kimdir sunxi-asboblar manba kodini kiritgan kod bombasini chiqarishimiz kerak. Bu bizning keyingi qadamimiz bo'ladi.

13 -qadam: Ekzorizm

Ekzorizm
Ekzorizm

Kod bombasini bo'shatish uchun fexc.c kod faylini oching va u erda keyingi tarkibning matnli satrini toping:

if if ((out = open (fayl nomi, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Buni faqat keyingi qator bilan almashtiring:

if if ((out = open (fayl nomi, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Agar birinchi qatorda "666" yomon raqamlari bo'lmasa, menimcha, koder O_BINARY bayrog'ini ishlatishni unutgan. Ammo "Yirtqichlar soni" uning niyatiga aniqlik kiritadi. Tasavvur qiling, bu qanchalik aqlli: Windows va Linuxda fayllarni qayta ishlashdagi nozik farq tufayli, yordamchi dastur Linuxda tuzilganda va ishlatilganda bomba hech qanday ta'sir ko'rsatmaydi. Ammo yordamchi dastur Windows ostida ishlatilganda hamma narsani buzadi.

Bomba qurolsizlangach, siz nihoyat Windows ish stoli kompyuteringizda fexc yordam dasturini kompilyatsiya qilishingiz va xavfsiz ishlatishingiz mumkin.

14 -qadam: QAYDLAR

QAYDLAR
QAYDLAR

1) fexc yordam dasturidan qulay foydalanish uchun siz ikkita ommaviy faylni olishingiz kerak:

bin2fex.bat - va - fex2bin.bat.

Siz ularni Windows uchun fexc.exe dasturidan olishingiz mumkin yoki ularni o'zingiz yozishingiz mumkin:

  • bin2fex.bat "fexc -I bin -O fex script.bin script.fex" ni o'z ichiga olishi kerak.
  • fex2bin.bat "fexc -O bin -I fex script.fex script.bin" ni o'z ichiga olishi kerak.

2) Windows uchun mman menejerini topish qiyin bo'lsa, uni ishlatishdan butunlay qochish mumkin. Biroq, bu fexc.c faylini tahrir qilishni talab qiladi va hech bo'lmaganda v ma'lumotlarini talab qiladi. Sizning ishonchingiz uchun men fxc-ning v1.4 sunxi-vositalaridan tahrirlangan manba kodini mman.h ga bog'liqlikdan ozod qilaman, kod bloklari loyiha fayli va namuna script.bin bilan apelsin pi. Siz fexc_nomman.zip -ni yuklab olishingiz mumkin

3) Sunxi asboblarining keyingi versiyalarida ular yana bir qancha bog'liqliklar qo'shishi mumkin. Ularni Internetdan topib, kompilyatsiya loyihangizga qo'shishingiz mumkin.

5) Nihoyat, Win32 uchun fexc.exe -ning oldindan tuzilgan versiyasi:

fexc_nomman.zip

Agar siz dangasa bo'lsangiz, ver dan foydalanishingiz mumkin. Agar SunxiTools/Windows -ning yangi versiyalari mavjud bo'lsa, u yangilanib turmasligini unutmang. Menimcha, ba'zi bir ikkilik tuzilishga bog'liq bo'lgandan ko'ra, ularni qanday kompilyatsiya qilishni o'rganish yaxshiroqdir.

4) "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner" va boshqalar … tegishli egalarining savdo belgilaridir.

5) Agar kompilyator mman funktsiyalarini topa olmasligidan shikoyat qilsa, masalan:

"_imp_mmap" ga aniqlanmagan havola

bilingki, mman rivojlanish jamoasini sevuvchilar kodni faqat dll kutubxonasi sifatida tuzish mumkinligini unutgan. Bu, bizda bo'lgani kabi, statik kutubxona yoki mustaqil kod bo'lishi mumkin. Muammoni hal qilish uchun "mman.h" faylini quyidagicha tahrirlang:

a) satrlarni toping:

#if aniqlangan (MMAN_LIBRXOBANI)

#MMANSHARED_EXPORT _declspec (dllexport) ni belgilang #boshqa #MMANSHARED_EXPORT _declspec (dllimport) #endif

b) qatorni qo'shing

#MMANSHARED_EXPORTni aniqlang

oldingi qadamda topilgan satrlar ostida

Tavsiya: