Mediul pentru compilarea încrucișată din Windows 7 pentru platforma ARM-Linux poate fi descărcat din mai multe surse:
- Linaro Toolchain Binaries - resursă actualizată periodic conținând cele mai recente versiuni ale compilatorului arm-linux-gnueabihf ie. care lucrează sub versiunea Windows, colectând fișiere pentru Rasberry Pi
- launchpad.net/gcc-arm-embedded - versiune impusă pentru microcontrolere "goale".
- Linaro Toolchain este, de asemenea, o sursă actualizată periodic. În plus față de Tulcheni înșiși, puteți descărca și sursele.
- Mentor Craphics. Nu cu mult timp în urmă, a fost anunțat un produs comercial, dar este încă posibil să descărcați o adunare gratuită bazată pe GNU GCC 4.9.1
- SysProgs. Sunteți pregătit deja să lucrați pentru zmeura Pi. Acesta conține compilatorul GCC, GDB Depanatorul, un număr de biblioteci script-ul pentru a sincroniza adăuga un Zmeura Pi, precum și un utilitar pentru înregistrarea pe o unitate flash USB. Distribuția include, de asemenea, SHH-client pentru conexiunea cu Raspberry Pi. În prezent există GCC 4.6.3 din distribuția "zmeură" și aproape complet proaspătă GCC 4.9.1. De asemenea, pe site-ul poate fi găsit înghesuit pentru platforme braț-EABI (GCC 4.9.2), brațul-elf (braț Linux), cubieboard (GCC 4.6.3.i imagine pentru Cubieboard 2 A20), OpenOCD și mult mai mult util.
De asemenea, în rețea găsiți instrucțiuni bune pentru asamblarea și instalarea maniverelor. Construcția este realizată într-un mediu linux, de exemplu, într-o mașină virtuală cu Ubuntu 10.
www.angstromsandalgorithms.com - conține instrucțiuni pentru asamblarea mediului de lucru. Instrucțiunea este foarte detaliată. Conține linkuri către versiuni de lucru stabile ale utilităților.
Auto-asamblare de cross-compilator pentru MinGW (Windows)
În articolul precedent, a fost construit GCC, care poate fi rulat pe Cubieboard. A fost făcută, care va verifica capacitatea de lucru a pachetului arm-cubie-linux-gnueabihf, colectat chiar mai devreme. Pentru a colecta ceva care lucrează în mediul Windows, este nevoie de încă un compilator. De data aceasta i686-pc-mingw32. În pachetul Crosstool-ng din dosarul Exemplu, există deja un script gata pentru construirea acestuia. Este suficient să îl copiați în crosstool rădăcină-ng și să deschideți funcțiile de încărcare.
Voi spune imediat că nu am reușit să compilez compilatorul de limbi Fortran în acest moment.
Anterior am descris în detaliu cum să modific setările utilitarului Crosstool-ng. În plus, nu există absolut nimic complicat în acest sens. Prin urmare, aici nu vă voi spune nimic.
În final, în folderul / home / user / x-tools la momentul începerii asamblării au fost două foldere cu două varietăți de GCC 4.9.3. Un bra-cubie-linux-gnueabihf pentru a construi ceva ce ar trebui făcut pe Cubiecoard. Al doilea este i686-pc-mingw32 pentru a lucra cu ceea ce ar trebui să funcționeze sub minGW într-un mediu Windows. Două compilatoare încrucișate.
Trebuie să combin eforturile lor pentru a construi un pachet care ar trebui să funcționeze în minGW, dar din moment ce acesta este și un compilator încrucișat, acesta va funcționa pe platforma Cubieboard. Aceasta definește primele două opțiuni pentru configurare.
În plus, în microcomputerul Cubieboard există un microprocesor arhitectural ARMv7 cu arhitectură Cortex-A8 și coprocesorul hardware-software Neon. Prin urmare, următoarele opțiuni trebuie să fie specificate în fișierul de setări
--cu-arc = armv7-a - cu-tune = cortex-a8 - cu-fpu = neon - cu-float = dur
Opțiunile - cu-arc și - cu-ton, precum și o serie de altele se referă la opțiunea țintă!
În consecință, opțiunile de suprascriere pentru compilator pentru cazul meu ar trebui să arate așa
În calitate de gazdă (--host) în sistemul meu este procesorul Atom, iar platforma Windows, apoi pentru a compila fișierele pachet care trebuie să fie transportate sau utilizate în gazdă selectați compilator i686-PC-mingw32 și puncte de la ea. Și deja în opțiunile sale, specificăm pentru ce procesor puterea să se optimizeze.
În mod similar pentru țintă.
Este clar că acest mod de trecere a parametrilor este local și dur. În schimb, puteți crea linkuri (în folderul de sistem usr / bin sau usr / local / bin) (necesită drepturi de root)
sudo ln -s / home / utilizator / x-tools / i686-pc / bin / i686-pc-gcc i686-pc-mingw-gcc
și așa mai departe pentru toate fișierele bin / bin din ambele compilatoare
atunci de fiecare dată când specificați calea completă nu va mai fi necesară. Comenzile specifice de tip CPU pot fi redate în opțiunea CFLAGS pentru --host și CFLAGS_FOR_TARGET pentru --target.
Există și alte modalități. Dar calea directă este mult mai sigură :).
În toate cazurile, dosarul / usr / bin va trebui să creeze legături simbolice
ln -s / home /. / i686-pc-mingw32-gcc i686-pc-mingw32-cc
ln -s / home /. / arm-cubie-linux-gnueabihf-gcc arm-linux-gnueabihf-cc
în loc de puncte de cale complet!
Dacă acest lucru nu se face, atunci în timpul procesului de construire, poate apărea o eroare datorită utilizării unui pachet vechi, care va atrage dependențe destul de diferite de biblioteci. În general, o terminare anormală cu o eroare.
Mai departe. Deși fișierele de compilare din limbi C, C ++ și Fortran vor fi colectate pentru platforma gazdă, dar bibliotecile asociate pentru sistemul țintă (--target), care vor fi colectate de munca compilator. Rezultă că, deși Fortran mine și pachetul i686-PC-mingw32 nu suporta, așa cum am scris mai sus, dar într-un pachet pentru brațul el are, dar suport Java și obj-C nu este, prin urmare, ar trebui să fie o opțiune
altfel procesul de compilare va eșua cu o eroare. Opțiunile de activare a bibliotecilor de suport lingvistic, cu excepția libanei, pot fi omise - ele sunt activate în mod implicit.
pentru că Platforma țintă se bazează pe linux, deși librăriile libitm, libffi etc. nu sunt acceptate în Windows MinGW, dar pot fi specificate ca activate.
Firește, pentru o construcție încrucișată, trebuie să existe o bootstrap -distabile, deoarece nici o autoasamblare în a doua și a treia trecere pur și simplu nu poate.
Restul opțiunilor au fost deja menționate de mai multe ori înainte.
Deci, începem să strângem. La început, un program inteligent definește un sistem de construcție, bine, ca întotdeauna
În procesul de lucru, puteți observa ce și ce compilator se întâmplă. Iată un exemplu despre ce înseamnă biblioteca libgcc.
Care, cu toate acestea, nu este surprinzător având în vedere ceea ce sunt necesare.Timpul de funcționare pe netbook-ul meu este de aproximativ șase până la șapte ore. Ca urmare, după instalare, a fost realizat un total de aproximativ 700 megaocteți. Acest lucru se datorează faptului că am fost "nesemnificativ" reasigurată și am adăugat opțiunea - permisiv-statică. Acest lucru a dus la faptul că toate bibliotecile au fost asamblate în mod static. Marimea arhivei tar.xz a devenit de asemenea impresionanta - aproximativ 135 MB, in timp ce cu dinamica este de obicei in jur de 40 MB.
Ei bine, bine. Transferăm-o în Windows. Despachetați și rulați cu opțiunea -v.
Aici puteți vedea lista completă a opțiunilor cu care am colectat pachetul.
Pentru o activitate deplină în mediul MinGW, aveți nevoie de același pachet binutils pe care tocmai l-ați creat. Acum există o nouă versiune 2.25.1. Și, de asemenea, glib-2.21. un plus bun este libelf. În general, dacă vă ocupați serios de aceasta, atunci pentru câteva gigabytes pachetul va crește :).
Instrumentele finite (colectate de mine mai devreme) pot fi descărcate: