Cross-összeállítás a kar-éjjel parancsnok, személyi kártya tetraquark alatt
A kereszt-összeállítás témája kétségtelenül fontos. A különböző projekteken végzett munka során teljesen lehetséges, hogy a programot különböző architektúrákra fordítják, anélkül, hogy a kívánt architektúrájú eszközökhöz való közvetlen hozzáférést biztosítanák. A leggyakoribb példa -, hogy összeállít egy fájlkezelő gép Raspberry Pi, hanem az, hogy azt közvetlenül a „torta” ötlet, várhatóan töltenek sok időt kell várni (nem tekintve a különböző problémák és hibák, hidd el, lesz).
Ezért néhány bejegyzést fogok kiadni e témában, hiszen hasonló problémák merültek fel bennem, amelyekkel még mindig sikerült megbirkózni. És szeretném megosztani a tapasztalatokat a nyilvánossággal.
Valójában, milyen feladatot, milyen kezdeti adatokat, mit jelent. A feladat az ismert fájlkezelő Midnight Commander (mc) összeállítása ARM architektúrájú rendszerhez. Kezünkben egy Intel processzorral rendelkező számítógép, az Ubuntu 14.04 operációs rendszerrel. Fordítóként a gcc-4.7-arm-linux-gnueabi csomagot használjuk, amely tökéletesen a tárolókon található. A forrásanyag a szükséges könyvtárak forráskódjai és maga a mc kódja.
Először is, egyszerűen telepítsük a keresztkötéshez szükséges eszközöket. Minden nagyon egyszerűen történik:
# apt-get telepítése gcc-4.7-arm-linux-gnueabi
# apt-get telepítse a gcc-arm-linux-gnueabit
Ez az eset úgy működik, mint a gcc, így hívhatja a fordítót: arm-linux-gnueabi-gcc. Az itt látható összes funkció: man arm-linux-gnueabi-gcc.
2. lépés - töltse le a forrásokat. A következő források szükségesek:
3. lépés - készítsünk kereszthivatkozásokat. Most meg kell készíteni a letöltött forráskódot a fordításhoz. De az első árnyalat - soha nem sikerült összeállítanom a mc-t relatív ösvényekkel. Aki nem tudja, a probléma az, hogy bizonyos könyvtárak összeállításakor meg kell adni a már lefordított függő könyvtárak elérési útvonalát. Valójában, amikor összeállítod a mc-t, meg kell adnod a fentieket. Adja meg a teljes elérési utat (és a konfigurációs szkript valamilyen okból szükség van rá, hogy abszolút elérési útját megadni), a mc indul csak ilyen fájlrendszert utakat, amelyben azt állítják össze. Például, ha úgy dönt, hogy összegyűjti az összes itt: / home / felhasználónév / arm_mc, akkor a program egy másik számítógépen elindul, amint a / home / felhasználónév / arm_mc, feltéve, hogy minden függő könyvtárak is található ezeken a helyeken, hogy jelezzük a határokon -kompilyatsii. Ez egy olyan probléma, amelyet nem tudtam megoldani, nagyon hálás leszek, ha valaki elmondja, hogyan kell ezt megtanulnia.
Ezért a mi esetünkben használjuk a legegyszerűbb lehetőség: minden fordításkor itt lesz a / tmp / mc_build / épít, és fuss minden rendben lesz az úton (ha úgy dönt, hogy ezt ne felejtsük el, hogy a szolgáltatás tmp könyvtárba - miután a rendszer újraindítását, a könyvtár tiszta ).
Ezért a következőket tesszük:
A könyvtár a / tmp / mc_build / forrásból valósult meg archív mc_src.tar.gz és végre dekompressziós a könyvtár tartalmát az összes archívumot kéz vagy úgy (mielőtt az első megy be az archív könyvtár):
$ tar -xf mc_src.tar.gz f in * .tar *; do tar xf $ f; csinált
4. lépés - összeállítás. A fordítási folyamat valójában nagyon egyszerű, számunkra valójában a fejlesztők már gondoskodtak a létrehozott konfigurációs szkriptekről és make-fájlokról, amelyek maguk a piszkos munkát végzik. Csak a szükséges függõségeket kell helyesen megadnunk, és a szkriptekhez szükséges zászlókat és paramétereket kell megadnunk. Hogyan fogjuk ezt megtenni: létre kell hoznunk egy végrehajtható bash parancsfájlt a könyvtár könyvtárának gyökérkönyvébe, regisztrálnunk kell a szükséges parancsokat ebben a parancsfájlban és végrehajtanánk ezt a szkriptet. Valójában ezt a folyamatot nagyon rutinszerűen kezeljük. Az első könyvtárhoz írom a teljes parancssorozatot, a többieknél csak a bash-scriptek szövegét adom meg.
Szkriptfájl létrehozása a gyökérben:
Másolja a következő szöveget erre a fájlra:
CHECK_LIBS = "-L / tmp / mc_build / builds / build_check-0.10.0 / lib / -lcheck" \
GLIB_CFLAGS = "-I / tmp / mc_build / épít / build_glib-2.44.1 / include / glib-2,0 -I / tmp / mc_build / épít / build_glib-2.44.1 / lib / glib-2,0 / include" \
GLIB_LIBS = "-L / tmp / mc_build / builds / build_glib-2.44.1 / lib -lglib-2.0" \
GMODULE_CFLAGS = "-I / tmp / mc_build / épít / build_glib-2.44.1 / include / glib-2,0 -I / tmp / mc_build / épít / build_glib-2.44.1 / lib / glib-2,0 / include" \
GMODULE_LIBS = "-L / tmp / mc_build / builds / build_glib-2.44.1 / lib / glib-2.0 -lgmodule-2.0" \
-- host = kar - linux - gnueabi \
-- prefix = / tmp / mc_build / builds / build_mc - 4.8.14 \
-- enable - static = igen \
-- a - screen = ncurses \
-- with - ncurses - includes = "/tmp/mc_build/builds/build_ncurses-5.9/include" \
-- with - ncurses - libs = "/tmp/mc_build/builds/build_ncurses-5.9/lib"
sudo make install
Ha az után történik minden a fenti volt Daddy /tmp/mc_build/builds/build_mc-4.8.14 - gratulálok, akkor valószínűleg nem cross-összeállítás Midnight Commander fájlkezelő ARM architektúra.
Következő lépések egyszerűek - betölt egy könyvtárat / tmp / mc_build / épül a kívánt rendszer az azonos nevű utat és fuss mc: /tmp/mc_build/builds/build_mc-4.8.14/bin/mc. Mindennek működnie kell.
A szórakoztatók számára - ebben a példában az ncurses könyvtárat grafikai könyvtárként használták fel, mivel egyszerűbb az összeszerelés szempontjából. Lehetőség van a szleng könyvtár használatára is (ez a verzió 2.3.0 verziója), de ez egy összetettebb feladat, hiszen a szlengnek kicsit több függősége van. Megpróbálhatod, eddig nem sikerült.
Köszönöm, tedd a husky-t, feliratkozom a csatornaomra, köszönöm!
Cross-összeállítás ARM alatt - OpenSSH
22 gondolata a "Cross összeállítás alatt ARM - Midnight Commander"
És még több. C ncurses problémák - nem fordít, akkor nem talál fejléceket, akkor libs. Készítettem nélküle. Mégis. Nem fordul elő a szleng könyvtárak nélkül. El kell gyűjtenünk.
Sugak Victor szerint:
Helló Mondja el az újonnan érkezettnek. Hogyan állapíthatja meg, hogy mire van szüksége a szükséges programhoz? Nos, miért van szüksége az MC-nek még öt forrásra?
Sugak Victor szerint:
Köszönöm.
És mit jelent ez a három sor
#! / bin / bash
ARCH = kar \
CC = kar-linux-gnueabi-gcc ./configure \
Miért nem tudsz csak belépni
$ arm-linux-gnueabi-gcc (forrásfájl neve) -o (a végrehajtható fájl neve)
Sajnálom a hülye kérdéseket, korábban nem kellett foglalkoznom a linuxral
Sugak Victor szerint: