Portál AbcLinuxu, 10. května 2025 01:03
i686-pc-linux-gnu
binárky pro sparc64-unknown-linux-gnu
. Existuje několik poměrně podrobných návodů: 1, 2,
3.
Všechny mají několik společných vlastností:
Nefungují.
Jsou beznadějně zastaralé.
Jsou nepřesné a nikde není seznam vstupních požadavků.
Postup podle návodu:
Kompilace binutils pro sparc64 - OK, funguje.
Kompilace základního GCC (nejspíš kvůli vytvoření důležitých knihoven) - selže. Někdy make & spol vygeneruje neplatný parametr -Q
příkazu exec
a překlad neúspěšně skončí. Jindy to hlásí C compiler cannot create executables
. Oba případy se střídají náhodně.
První problém rozhodně není moje chyba. Druhý problém jsem zkoušel řešit modifikací proměnné PATH i přidáním symlinků na nové binutils pro sparc64, avšak bezvýsledně.
A další kroky už vůbec nemá cenu zkoušet.
Je snad nutné použít nějakou starou verzi GCC, která tyto chyby nemá?
Nemáte někdo s něčím podobným zkušenost? Víte o nějakém funkčním řešení? Správci distribucí cross-compiler nutně potřebují. Tedy jistě existuje způsob, jak GCC přeložit. Jen ho najít...
Předejdu otázce: Ne, nechci si stáhnout předpřipravené obrazy. Chci vědět, jak to funguje.
Použij Gentoonebo se podívej, jak to dělá.
Z obojího mám trochu obavy... Možná bych si mohl spustit pouze základní instalaci Gentoo ve VirtualBoxu nebo VMWare a pak odtamtud vzít hotovou binárku. Hlavně bych se rád dopídil toho, jak crossdev zajistí, aby kompilace fungovala. Asi používá starší verzi GCC. Aspoň u cross-compileru pro Win32, který jsem úspěšně vytvořil z PKGBUILDu přímo pod Archem, tomu tak bylo. Tam měli nějaké GCC 3.x a tím se pak znovu přeložilo výsledné GCC 4.x.
Hlavně bych se rád dopídil toho, jak crossdev zajistí, aby kompilace fungovala.Mám tu i686-mingw 4.2.0 kompilované s x86-64 gcc 4.2.0, gcc 3.x to nepoužívá. Hlásí to tyto podrobnosti:
Configured with: /var/tmp/cross/i686-mingw32/portage/cross-i686-mingw32/gcc-4.2.0/work/gcc-4.2.0/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/i686-mingw32/gcc-bin/4.2.0 --includedir=/usr/lib/gcc/i686-mingw32/4.2.0/include --datadir=/usr/share/gcc-data/i686-mingw32/4.2.0 --mandir=/usr/share/gcc-data/i686-mingw32/4.2.0/man --infodir=/usr/share/gcc-data/i686-mingw32/4.2.0/info --with-gxx-include-dir=/usr/lib/gcc/i686-mingw32/4.2.0/include/g++-v4 --host=x86_64-pc-linux-gnu --target=i686-mingw32 --build=x86_64-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++ --with-sysroot=/usr/i686-mingw32 --disable-bootstrap --disable-libgomp
To znám, i686-mingw mám taktéž. Pro ArchLinux je na to v AUR přímo PKGBUILD, který tohle všechno udělá a vyplivne funkční překladač. Podstatný rozdíl oproti sparc64 je v tom, že knihovna mingw je úzce zaměřená na jednu platformu. Pro její zprovoznění s GCC není potřeba tolik triků jako v případě binutils a glibc.
A že jsem hodnej, tak tady je odkaz
Díky za odkaz. Tuto stránku jsem předtím nenašel ani po hodinovém hledání Googlem. Překvapuje mě, že na mě z Googlu nevyskočila jako první. Když zadám cross-compiler linux sparc64
, nic relevantnějšího než tohle přece nemůže existovat. Pokud Google stránku nenajde, nejspíš na ni nevede dostatek odkazů. To mě překvapuje ještě víc.
Pokud jde o samotný návod, zběžně jsem ho pročetl až po samotnou kompilaci nového systému. Můj dojem z něj je takový, že je silně překomplikovaný a předimenzovaný. (Například vytváření celého nového diskového oddílu jen kvůli kompilaci mi připadá (mírně řečeno) matoucí. Oddíl na hostitelském počítači nemá s bootováním cílového stroje vůbec nic společného. Zabezpečit se dá stejně dobře i adresář.) To ale nic nemění na tom, že je nejspíš jediný svého druhu.
Příjemné je, že se tam přesně uvádí, jak se musí nastavit překlad GCC, aby fungoval. Je to mnohem složitější procedura, než jakou jsem předtím zkoušel. Nepříjemným faktem však zůstává, že každý kousek software je nutné kvůli specifickému nastavení zkompilovat zvlášť. Jinak řečeno - nelze prostě vzít build framework z ArchLinuxu a napasovat ho rychle a jednoduše na tento návod...
Mimochodem - tady je vidět velmi podstatný nedostatek ArchLinuxu ve srovnání se „staršími a zkušenějšími“ distribucemi - Debian, Gentoo, Fedora a podobně. Nelze prostě jen tak vzít strom ABS, něco někde přepnout a zkompilovat systém pro jinou architekturu. Přesněji řečeno, samozřejmě to možné je, ale při každé aktualizaci by člověk musel editovat všechny potřebné PKGBUILDy. (To ale koneckonců není příliš překvapivé - u některých distribucích pracují na portech pro non-PC architektury celé týmy lidí...)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.