abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 14:23 | Zajímavý článek
Check Point zveřejnil report, podle kterého NSA v roce 2013 vytvořila exploit pro operační systém MS Windows. Exploit sloužil k lokální eskalaci práv. O rok později tento exploit ukradli hackeři z Číny. Až po dvou letech byl exploit zveřejněn a Microsoft vydal aktualizaci. Jinými slovy, celé téma se točí o tom, jak NSA zřejmě přispěla ke globálnímu snížení kybernetické bezpečnosti. Celý příběh podrobně naleznete na checkpoint.com.
Max | Komentářů: 2
dnes 09:11 | Komunita

Framework Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací byl vydán ve verzi 2 a související programovací jazyk Dart (Wikipedie) byl vydán ve verzi 2.12. Proběhla online konference Flutter Engage. Videozáznam je k dispozici na YouTube. Canonical zde oznámil (Twitter, YouTube), že Flutter je výchozí volba pro vývoj nových aplikací pro Ubuntu.

Ladislav Hagara | Komentářů: 0
dnes 09:00 | IT novinky

Společnost AMD na YouTube představila novou grafickou kartu AMD Radeon RX 6700 XT postavenou na architektuře RDNA 2. V prodeji bude od 18. března. Její cena byla stanovena na 479 dolarů.

Ladislav Hagara | Komentářů: 15
dnes 08:00 | Nová verze

Uživatelsky přívětivý shell fish byl vydán ve verzi 3.2.0 Vylepšuje uživatelské rozhraní (doplňování, práce s historií úprav textu aj.), přidává napovídání argumentů dalších aplikací, zjednodušuje syntaxi (expanze rozsahů), opravuje chyby.

Fluttershy, yay! | Komentářů: 0
včera 16:00 | Zajímavý software

Steam Link je nově dostupný také pro 64bitový x86 Linux. Streamovat hry z výkonného počítače s nainstalovanou službou Steam lze tedy vedle telefonu, tabletu nebo televize i do počítače s Linuxem. Instalovat Steam Link lze z Flathubu. Od prosince 2018 je k dispozici Steam Link pro Raspberry Pi.

Ladislav Hagara | Komentářů: 0
včera 14:28 | Nová verze

openSUSE Leap 15.3 je od dnešního dne v Beta fázi. Toto vydání je zajímavé tím, že využívá binárních balíčků přímo ze SUSE Linux Enterprise. Podpora ARMv7 zařízení se odštěpila do samostatného podprojektu openSUSE Step. Instalační obrazy Leapu 15.3 jsou k nalezení na get.opensuse.org/testing. Pro ty, co se zapojí do Beta testování, čeká po skončení Beta fáze tričko. Více informací naleznete v oficiálním oznámení.

lkocman | Komentářů: 3
včera 10:00 | Nová verze

Byla vydána nová verze 8.5 sady aplikací pro SSH komunikaci OpenSSH. Opětovně se upozorňuje na blížící se zákaz algoritmu ssh-rsa kvůli možnému útoku na SHA-1.

Ladislav Hagara | Komentářů: 0
včera 09:44 | Pozvánky

Ako posunúť monitoring pomocou Zabbixu na vyššiu úroveň alebo "Čo nenájdete v out of the box inštalácii" odprezentuje séria Zabbix webinárov v slovenčine. Medzi témami nájdete napr. servisný strom, integráciu Openshift klastrov, monitoring SAP prostredia a iné.

gofree | Komentářů: 0
včera 09:00 | Komunita

Společnost Adobe oznámila, že končí s multiplatformním open source textovým editorem Brackets a jeho uživatelům doporučuje přechod na Visual Studio Code s rozšířením Brackets.

Ladislav Hagara | Komentářů: 7
včera 08:00 | Nová verze

Google Chrome 89 byl prohlášen za stabilní. Nejnovější stabilní verze 89.0.4389.72 přináší řadu oprav a vylepšení (YouTube). Zdůraznit je nutno WebHID, WebNFC a Web Serial aneb možnost komunikace například s Raspberry Pi Pico nebo Stream Deck přímo z Chrome. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 47 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 2
Vzděláváte se formou hromadných online kurzů (MOOC)?
 (58%)
 (10%)
 (1%)
 (5%)
 (26%)
Celkem 93 hlasů
 Komentářů: 0
Rozcestník
AbcLinuxu:/ Blogy / / x /

25.3.2016 11:47 | x | Výběrový blog | poslední úprava: 6.10.2018 23:19

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

25.3.2016 14:57 Petr
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
Sice to 100% nikdy nevyužiju, ale díky za první přínosný blogpost za dlouhou dobu, jen díky lidem jako jsi ty není z ábíčka úplná žumpa
26.3.2016 17:43 kotrcka | skóre: 23 | blog: Onééé 2 | Praha
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
+3.14
You son of a bit.. coin
mirec avatar 25.3.2016 17:22 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM

Nie každý ARM je rovnaký. Spomínané balíčky pre arch sú skompilované s hard float point podporou (takže na platformách so softfp nepôjde). Ďalej tu máme rzdiely medzi rôznymi inštrukciami ako NEON, VFP ...

Ja som kvôli tomu prešiel na crosstool-ng, balíky si kompiluejm cez buildroot (dá sa tam nastaviť externý toolchain).

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
26.3.2016 23:13 Pavel Píša | skóre: 16 | blog: logic
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM

Pozor při rozbalování knihoven na to, že GCC musí pro účely kompilace nalézt jako první libc.so, která ve skutečnosti není sdíleným objektem .so ale linker scriptem

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-littlearm)
GROUP ( /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc_nonshared.a  AS_NEEDED ( /lib/arm-linux-gnuea
bihf/ld-linux-armhf.so.3 ) )

Obecně je pak pro standardní kompilaci GCC s prefixem /user lepší nedávat nic do /usr/arm-linux-gnueabihf/lib (tedy až na ldscripts, které je součástí křízových binutils). Veškeré kódy z cílového systému je lepší dávat přímo, bez modifikací cest do /usr/arm-linux-gnueabihf/sys-root. GCC si správně do vyhledávacích cest vše přidá. Cesta ke compile time libc.so ld-scriptu je pak

/usr/arm-linux-gnueabihf/sys-root/usr/lib/arm-linux-gnueabihf/libc.so

Binární C knihovna s linky jsou pak v

/usr/arm-linux-gnueabihf/sys-root/lib/arm-linux-gnueabihf/{libc.so,libc.so.6,libc-2.xx.so}

Žádné modifikace cest pak nejsou potřeba. Dokonce při správném nakonfigurování usr/bin/qemu-arm-static do misc executable formats a nakopírování do sys-root/usr/bin lze normálně i na x86 stroji provést chroot do instalace distribuce pro target a spravovat balíčky nástroji distribuce. Na Debianu prostě udělám

debootstrap --keyring=/usr/share/keyrings/debian-archive-keyring.gpg --arch=armhf --include=debian-keyring,mc,libc6-dev,libstdc++6,busybox,aptitude jessie /srv/nfs/debian-armhf/ ftp://ftp.cz.debian.org/debian/

Pak mohu /usr/arm-linux-gnueabihf/sys-root otočit jako symlink do /srv/nfs/debian-armhf/ doinstalovat v chrootu co chci, kompilovat cross-em vyexportovat a rovnou cílovou desku přes TFTP (jádro) a NFS (root filesystém) rozjet bez nutnosti jakýchkoliv opiček a instalování na SD kartu nebo jinam do cílové desky. Pokud pak pro standalone běh potřebuji systém zkonfigurovat, tak si z běžícího systému přes NFS sformátuji lokální úložiště a systém překopíruji na targetu. Vše přes SSH. Alternativně, pokud není médium NAND nebo eMMC, tak mohu SD kartu nakopírovat na vývojovém počítači.

26.3.2016 23:16 Pavel Píša | skóre: 16 | blog: logic
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
Ještě upozornění, tu libc.so je potřeba většinou pro cross poeditovat tak, aby absolutní cesty vedly tam, kde statické .a a dynamické .so skutečně je. Nevím jestli jde cesty specifikovat rozumně relativně.

Takže v tomto jediném souboru se target FS liší od toho, který umožní kompilaci pomocí GCC přímo na cílové platformě.
29.3.2016 12:36 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
To asi není úplně pro mě. Na tý ARM destičce můžu mít úplně jiné distro, kde je všechno jinak. Jasně, nějakej cross-compile chroot, kde bych si nastavil celej systém, by asi byl šikovnější, ale nevím jestli mám tu možnost a jestli se mi s tím chce nastavovat ;-)
29.3.2016 23:12 Pavel Píša | skóre: 16 | blog: logic
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM

Debootstrap a chroot byly jen třešničky na dortu. Hlavní je, že pro normálně zkompilovaný cross-kompilátor není potřeba šachovat s cestami. Stačí to, co je pro kompilaci v "target" filesystému potřeba dávat pod /usr/arm-linux-gnueabihf/sys-root i včetně zanoření knihoven do podadresářů podle architektury atd. Přeskupením do adresáře čistě pro devel knihovny, jak máte ve Vašem skriptu, může dojít ke kolizím a problémům, viz libc.so.

[[ -d "${pkg}/usr/include" ]] && cp -r "${pkg}/usr/include" "${armprefix}/include"
[[ -d "${pkg}/usr/lib" ]] && cp -r "${pkg}/usr/lib" "${armprefix}/lib"
30.3.2016 09:34 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
Nevím přesně jaké kolize máte na mysli, kolize souborů při instalaci balíčku odhalí pacman.

Ještě se zeptám - proč se adresář jmenuje zrovna sys-root? To je nějaký magický název, který gcc očekává, nebo to je dané čistě nastavením v linker skriptu?
30.3.2016 21:16 Pavel Píša | skóre: 16 | blog: logic
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM

Cesta je zakompilovaná do GCC podle nastavení v configure

--with-build-sysroot=sysroot use sysroot as the system root during the build
  --with-sysroot[=DIR]    search for usr/lib, usr/include, et al, within DIR

stejně tak do binutils

--with-sysroot=DIR Search for usr/lib et al within DIR

a lze ji i při volání GCC a ld měnit přepínačem --sysroot=<directory> a zakompilovanou hodnotu zjistit -print-sysroot. Ale teď zpětně si nejsem jistý, jestli je při defaultní kompilaci křížového GCC hodnota nastavená, protože já jí mám uvedenou v configure GCC a Binutils explicitně. Ale myslím, že jsem nastavení vzal podle nějakého vzoru.

--with-headers=/usr/arm-rpi-linux-gnueabihf/sys-include \
--with-sysroot=/usr/arm-rpi-linux-gnueabihf/sys-root \

Při tvorbě kompilátoru, který mám do sebe zatáhnout podporu již existující binární GLIBC lze soubory rozkopírovat i do normálního taget include a lib. Ale může být konflikt, když je stejné jméno souboru v lib i v usr/lib. To může být případ libc.so. V každém případě, pokud jsem vytvářel kompilátor, který měl být čistý, to je neovlivněný již existující zkompilování GLIBC starým kompilátorem, tak sysroot byla nutnost. Protože se nejdříve musí vylákat build headers z jára, aniž máme kompilátor a pak správně podle těchto nakonfigurované hlavičky GLIBC, opět bez předchozí existence kompilátoru. Viz již poměrně staré mé poznámky

https://rtime.felk.cvut.cz/hw/index.php/How_to_build_GNU_cross-compilers

Vlastní jméno adresáře sys-root by mělo být defaultní podle https://gcc.gnu.org/install/configure.html a doporučené. Ale asi to chce zkontrolovat, zdá se, že se používají i jiná nastavení. V každém případě je podle GCC vývojářů/manuálu používat GCC pro nenativní kompilaci takto. Kopírování systémových hlaviček a knihoven není minimálně pro build doporučené. Ale dokud Vám to chodí a pokud se správně knihovny hledají i v architekturou prefixovaných podadresářích lib, tak to třeba ve Vašem případě není nutné. Za sebe si myslím, že úpravy cest nejsou správné, bezpečně vím o pár situacích kdy by mohly vést k chybám a zároveň ti kdo připravují křížová prostředí profesionálně (Qt, Pengutronix a další.) jednoznačně používají tato doporučená řešení. Ale tímto jsem se již po původním záměru nasměrovat na rozumné řešení a následné diskuzi vysílil a končím.

30.3.2016 21:51 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
No s těmi balíčky z AURu je to asi trochu jinak, protože tam je sysroot nataven přímo na:

$ arm-linux-gnueabihf-gcc -print-sysroot
/usr/arm-linux-gnueabihf

s tím, že usr/lib a usr/include jsou symlinky na lib a include o úroveň výš.
Kopírování systémových hlaviček a knihoven není minimálně pro build doporučené.
Možná došlo k nedorozumění, to gcc je zcela nové se vším všade od linux kernel headers přesně jak popisujete. Vykopírované knihovny jsou zkopírované z balíčků pro ARM pro stejnou architekturu, zkompilované stejným způsobem, takže to by taky mělo být ok.
Ale tímto jsem se již po původním záměru nasměrovat na rozumné řešení a následné diskuzi vysílil a končím.
V pořádku ;-) Já děkuji za rady.
29.3.2016 19:25 nyan
Rozbalit Rozbalit vše Re: Kompiliace programů v Rustu a C pro ARM
Ja mam doma dve ARM desticky (jedna koupena, jedna darovana) a ARM musim zesumarizovat jako : hracky.

Problem neni ve vykonu, problem je pristup vyrobcu. Reknou: Tady mate skvelou desticku. Tady k ni mate distro + kernel ktery sme udelali doma na kolene. Budeme se snazit dostat nase patche do upstream kernelu...

A pak se tri mesice snazi, Linus nebo jeste nekdo pred nim je samozrejme posle do <> protoze jejich kod jsou desive sr**ky, a pak to vzdaji protoze musi delat na jejich dalsi uzasne desticce.

Co zustane uzivateli ? Ma na vyber nestabilni made in china kernel deravy jak sito, nebo upstream kernel ktery nepodporuje 1/2 jeho hardwaru. A jakoze na nepodporu GPU jsme zvykly z PC, ale kernel ktery neumi pristupovat na NAND flash te desticky, je tak trochu k nicemu...

Ted se objevil hardware ktery by byl konecne pouzitelny i pro development (ma to DDR3 SO-DIMM sloty), akorat nejak nemam chut davat $300 kdyz to bude zase to same...

Jedina vyjimka v tomhle je mozna RaspPi, ale tam zas network i disky na jednom USB radici... hruza.

A to jsme na tom zatim jeste dobre, az prijde Internet of things, to bude teprv zaplava sr**ek...

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.