Daftar Isi:

Orange PI HowTo: Kompilasi Alat Sunxi untuk Windows Di Bawah Windows: 14 Langkah (dengan Gambar)
Orange PI HowTo: Kompilasi Alat Sunxi untuk Windows Di Bawah Windows: 14 Langkah (dengan Gambar)

Video: Orange PI HowTo: Kompilasi Alat Sunxi untuk Windows Di Bawah Windows: 14 Langkah (dengan Gambar)

Video: Orange PI HowTo: Kompilasi Alat Sunxi untuk Windows Di Bawah Windows: 14 Langkah (dengan Gambar)
Video: linux armbian - how to build your own armbian image 2024, November
Anonim
Orange PI HowTo: Kompilasi Alat Sunxi untuk Windows Di Bawah Windows
Orange PI HowTo: Kompilasi Alat Sunxi untuk Windows Di Bawah Windows

PRASYARAT:

Anda akan perlu

  1. Komputer (desktop) yang menjalankan Windows.
  2. Koneksi internet.
  3. Papan PI Oranye.

Yang terakhir adalah opsional, tetapi saya yakin, Anda sudah memilikinya. Jika tidak, Anda tidak akan membaca instruksi ini.

Ketika Anda membeli komputer papan tunggal Orange PI, komputer itu hanya tinggal sepotong logam mati sampai dikonfigurasi dengan benar. Dan file konfigurasi utamanya: "script.bin" adalah kunci pertama untuk menghidupkannya. File ini terletak di partisi boot kartu SD yang dapat di-boot. Dan untungnya bagi kami, di sebagian besar distribusi Linux dari situs Resmi (https://www.orangepi.org/downloadresources/) partisi ini adalah FAT32 dan dapat dengan mudah dilihat oleh komputer Windows mana pun. Itu benar-benar menyederhanakan banyak hal, karena masih belum ada cara yang dapat diandalkan untuk menulis ke dalam partisi Linux ext2 dari bawah Windows.

Sayangnya bagi kami, file konfigurasi script.bin memiliki format biner yang sama sekali tidak ramah untuk pengeditan manusia. Seseorang membutuhkan semacam alat perangkat lunak untuk mendekripsi dan crypt kembali setelah modifikasi yang diperlukan telah dibuat. Dan perangkat seperti itu memang ada. Ini adalah SUNXI-TOOLS yang terkenal. Kelebihannya adalah bahwa itu dimaksudkan untuk berjalan di Linux dan kita harus menyimpan mesin Linux khusus hanya untuk menggunakan sunxi-tools, atau untuk menemukan cara bagaimana mengkompilasinya untuk windows.

Saya dapat dengan mudah mengkompilasinya dan membagikan executable-nya, tetapi orang tidak pernah tahu apakah mereka ingin membuat rilis baru dan Anda akan membutuhkan kompilasi baru secepatnya. Jadi saya memutuskan untuk membuat panduan bagaimana mengkompilasi alat penting dari sumbernya. Mari kita mulai.

Langkah 1: Unduh Sunxi-tools

Unduh Sunxi-tools
Unduh Sunxi-tools
Unduh Sunxi-tools
Unduh Sunxi-tools

Dapatkan kode sumber sunxi-tools versi terbaru (atau perlu). Buka URL: https://github.com/linux-sunxi/sunxi-tools/releases dan pilih untuk mengunduh sebagai arsip zip.

Langkah 2: Buka zip Sourcecode

Buka zip Kode Sumber
Buka zip Kode Sumber

Setelah unduhan selesai, unzip kode sumber ke folder pilihan Anda. (selanjutnya saya akan berasumsi bahwa folder ini adalah c:\sunxitools\, jadi ganti jalur ini dengan jalur Anda sendiri).

Langkah 3: Unduh Kode::blok

Unduh Kode::blok
Unduh Kode::blok

Jika Anda memiliki salinan yang diinstal dari beberapa kompiler c ++ operasional untuk windows. dan jika Anda tahu cara menggunakannya, Anda dapat langsung melanjutkan ke langkah 3. Orang lain harus mendapatkan kompiler c++ yang tepat dan shell (IDE) untuk menggunakannya dengan nyaman. Pilihan saya adalah code::blocks untuk Windows bersama dengan toolchain MinGW yang sudah diinstal sebelumnya. Anda bisa mendapatkannya dari sini:

Unduh dan instal.

Langkah 4: Uji IDE Anda

Uji IDE Anda
Uji IDE Anda

Untuk menguji apakah semuanya berjalan baik, mulai blok kode, klik "buat proyek baru", pilih "aplikasi konsol", pilih c atau c++, ketik judul proyek checkout, biarkan default tidak tersentuh di jendela berikutnya dan klik "selesai ".

Langkah 5: Selesaikan Tes

Tes Lengkap
Tes Lengkap

Kemudian klik segitiga hijau di panel atas IDE atau gunakan titik menu Build->Run. Jika semuanya berjalan dengan baik Anda akan melihat pesan dari aplikasi "Hello world" Anda yang dibuat secara otomatis di jendela "DOS" hitam.

Jika tidak, itu berarti IDE dan kompilernya tidak bekerja dengan benar dan Anda harus menyelidiki cara mengaturnya dengan benar. Mungkin Anda harus mengunduh alat pemrograman versi lain atau memeriksa izinnya di perangkat lunak firewall/antivirus Anda.

Langkah 6: Buat Proyek Baru

Buat Proyek Baru
Buat Proyek Baru
Buat Proyek Baru
Buat Proyek Baru
Buat Proyek Baru
Buat Proyek Baru
Buat Proyek Baru
Buat Proyek Baru

Sekarang Anda seharusnya memiliki toolkit programer C/C++ operasional dan kode sumber sunxi-tools yang telah dibongkar di folder c:\sunxitools\ di komputer Anda. Saatnya untuk merakit sebuah proyek. Buat proyek baru di IDE Anda. Pilih proyek C (bukan c++) biasa dari tipe "aplikasi konsol".

Pastikan Anda membuat proyek di folder c:\sunxitools\ dan bukan di tempat lain. (EG codeblock cenderung membuat subfolder dengan nama yang sama dengan nama proyek. Jadi, jika Anda telah menamai proyek Anda, katakan "test", dan coba letakkan di c:\sunxitools\, Anda mungkin berakhir dengan proyek hilang ke c:\sunxitools\test\ jika Anda tidak cukup perhatian.) Sunxi-tools berisi beberapa utilitas, tetapi untuk tujuan kita, kita hanya memerlukan satu: yang disebut utilitas "fexc".

Langkah 7: Tambahkan File ke Proyek

Tambahkan File ke Proyek
Tambahkan File ke Proyek

Utilitas "fexc" yang tepat bertanggung jawab untuk konversi script.bin ke dalam format teks dan untuk konversi kembali ke biner. Sangat penting bahwa executable dari utilitas ini memiliki nama "fexc.exe", jadi bagus jika Anda menamai proyek Anda sebagai "fexc". Namun Anda dapat menggunakan nama lain dari proyek, karena Anda selalu dapat mengganti nama yang dapat dieksekusi setelah kompilasi, atau Anda dapat memilih "Proyek-> Properti" dari menu pull-down atas dan di jendela yang muncul klik tab "Bangun target", dan edit bidang "Nama file keluaran" di sana untuk mengganti nama yang dapat dieksekusi.

Untuk proyek autogenerated Anda Anda harus menambahkan hanya lima file sumber:

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

dan tujuh file header:

  • list.h (pindahkan dari folder c:\sunxitools\include\ ke folder c:\sunxitools)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • versi.h

Pastikan untuk mengecualikan main.c yang dibuat secara otomatis dari proyek, karena fexc.c sudah memiliki fungsi "int main" di dalamnya. (Ingat bahwa setiap program seharusnya hanya memiliki satu fungsi utama?).

Semua file kode sumber yang diperlukan sudah ada di subfolder, tempat Anda membongkar kode sumber. File header layak mendapatkan sepasang kata, di mana mendapatkannya. "list.h" - biasanya ada di subfolder "include" dari kumpulan kode sumber yang belum dibongkar. "version.h" - buat saja sendiri. Letakkan di sana string seperti:

#menentukan VERSI "Win32"

Kemudian simpan dan tutup file. (Anda dapat menghiasnya dengan #define dan #ifdef jika Anda mau.)

Jika Anda sekarang mencoba untuk mengkompilasi proyek itu akan mengeluh tentang banyak kesalahan dan satu file yang hilang. Kesalahan sebagian besar disebabkan oleh sedikit kebebasan gaya yang berlebihan, programer sunxi-tools yang digunakan untuk menerapkan, dan file yang hilang adalah ketergantungan yang tidak disertakan ke dalam paket kode sumber. Mari kita tangani ini selangkah demi selangkah.

Langkah 8: Minta Gcc Mengikuti Standar Bahasa ISO C 1999

Minta Gcc Mengikuti Standar Bahasa ISO C 1999
Minta Gcc Mengikuti Standar Bahasa ISO C 1999

Agar kompiler tidak mengeluh gaya pemrograman yang terlalu bebas, atur standar kompilasi "с99". Dalam blok kode, buka menu "Project -> Build Options" dan di "Compiler Settings -> Compiler Flags" centang kotak "Minta gcc mengikuti standar bahasa ISO C 1999". Atau Anda bisa menambahkan "-std=c99" ke dalam string opsi kompiler Anda. Sekarang jika Anda mencoba mengkompilasi proyek, banyak kesalahan itu akan hilang dan Anda satu-satu dengan ketergantungan yang hilang.

Langkah 9: Temukan Ketergantungan yang Hilang

Temukan Ketergantungan yang Hilang
Temukan Ketergantungan yang Hilang

Ketergantungan yang hilang adalah file "mman.h" - header dari beberapa jenis manajer memori linux. Windows C secara asli tidak memiliki file seperti itu, tetapi untungnya ada port windows-nya. Buka https://github.com/witwall/mman-win32 untuk windows. Unduh snapshot repositori git.

Langkah 10: Buka kemasan Mman

Buka kemasan Mman
Buka kemasan Mman

Buka kemasan file mman.c dan mman.h, letakkan di folder c:\sunxitools\.

Langkah 11: Dan Tambahkan Mereka ke Proyek

Dan Tambahkan Mereka ke Proyek
Dan Tambahkan Mereka ke Proyek

Langkah 12: Jalur yang Benar

Jalan yang benar
Jalan yang benar

Dan di file raplece baris "fex.c":

#termasuk

ke

#sertakan "mman.h"

Pada langkah ini compiler Anda tidak akan mengeluh apapun dan Anda akan mendapatkan fexc.exe menunggu lama sebagai output. Jangan bahagia terlalu dini. Utilitas masih belum sepenuhnya berfungsi. Anda dapat memastikan ini dengan mendekripsi beberapa file script.bin yang valid ke dalam bentuk teks - file script.fex dengan konsekuensi mengenkripsi file script.fex kembali ke dalam script.bin. Anda mungkin memperhatikan bahwa ukuran script.bin yang dihasilkan sedikit berbeda dari ukuran script.bin asli. Dan jika Anda mencoba mendekripsi hasilnya sekali lagi, itu akan gagal. Baik Orange PI tidak akan berfungsi dengan script.bin ini. Untuk mendapatkan utilitas fungsional, kita harus melepaskan bom kode, yang telah dimasukkan seseorang ke dalam kode sumber sunxi-tools. Itu akan menjadi langkah kami selanjutnya.

Langkah 13: Eksorsisme

Pengusiran setan
Pengusiran setan

Untuk melepaskan bom kode, buka file kode fexc.c dan temukan di sana string teks dari konten berikutnya:

else if ((keluar = buka(nama file, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {

Ganti saja dengan string berikutnya:

else if ((keluar = buka(nama file, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 512))<0){

Jika bukan angka jahat "666" di string pertama, saya pikir pembuat kode baru saja lupa menggunakan flag O_BINARY. Tapi Number of The Beast mengklarifikasi niatnya secara transparan. Bayangkan, betapa cerdiknya itu: karena perbedaan halus dalam cara file diproses di Windows dan Linux, bom itu tidak berpengaruh ketika utilitas dikompilasi dan digunakan di Linux. Tapi itu merusak segalanya ketika utilitas digunakan di bawah Windows.

Setelah bom dilucuti, Anda akhirnya dapat mengkompilasi dan menggunakan utilitas fexc dengan aman di komputer desktop Windows Anda.

Langkah 14: CATATAN

CATATAN
CATATAN

1) Untuk menggunakan utilitas fexc dengan nyaman, Anda harus mendapatkan dua file batch:

bin2fex.bat - dan - fex2bin.bat.

Anda bisa mendapatkannya dari beberapa build fexc.exe yang gagal untuk Windows di luar sana, atau Anda bisa mengetiknya Sendiri:

  • bin2fex.bat harus berisi "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat harus berisi "fexc -O bin -I fex script.fex script.bin"

2) Jika sulit menemukan manajer mman untuk Windows, seseorang dapat menghindari penggunaannya sama sekali. Namun dibutuhkan lebih banyak pengeditan file fexc.c dan membutuhkan setidaknya beberapa pengetahuan tentang c. Demi kenyamanan Anda, saya membagikan kode sumber fexc yang telah diedit dari sunxi-tools v1.4 bebas dari ketergantungan pada mman.h bersama dengan file proyek blok kode dan dengan contoh script.bin dari beberapa pi oranye. Anda dapat mengunduh fexc_nomman.zip

3) Ada kemungkinan bahwa dalam versi berikutnya dari sunxi-tools mereka akan menambahkan beberapa dependensi lagi. Jangan ragu untuk menemukannya melalui internet dan menambahkannya ke proyek kompilasi Anda.

5) Akhirnya di sini adalah versi fexc.exe yang telah dikompilasi untuk Win32:

fexc_nomman.zip

Jika Anda cukup malas, silakan gunakan ver. Namun berhati-hatilah bahwa itu tidak akan diperbarui jika/ketika versi SunxiTools/Windows yang lebih baru akan tersedia. Jadi lebih baik mempelajari cara mengompilasinya daripada bergantung pada beberapa build biner tetap, saya kira.

4) "Oranye PI", "Kode::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", dll… adalah merek dagang koresponden dari pemiliknya masing-masing.

5) Jika Anda mengeluh tentang tidak menemukan fungsi mman, seperti:

referensi tidak terdefinisi ke '_imp_mmap'

perlu diketahui bahwa pecinta komunitas pengembangan mman telah lupa bahwa kode tersebut dapat dikompilasi tidak hanya sebagai perpustakaan dll. Itu juga bisa berupa perpustakaan statis atau kode mandiri seperti yang kita miliki di sini. Untuk memperbaiki masalah edit file "mman.h" sebagai berikut:

a) temukan string:

#jika ditentukan(MMAN_LIBRARY)

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

b) tambahkan string

#define MMANSHARED_EXPORT

tepat di bawah string yang ditemukan pada langkah sebelumnya

Direkomendasikan: