Portál AbcLinuxu, 10. května 2025 16:37

Dotaz: ARM Crosscompiling

31.10.2010 09:07 Matlák
ARM Crosscompiling
Přečteno: 748×
Odpovědět | Admin
Dobrý den. Mám takový problém se zprovozněním toolchainu pro kompilování arm-elf binárek na x86. Stáhnul jsem arm-2009q3 codesourcery, což jak jsem zjistil je balík obsahující pouze kompilátor gcc. Bohužel ani nejjednoduší "hello-world!" program s ním nezkompiluji, protože mi pravděpodobně chybí esenciální glibc pro ARM.


$ arm-none-eabi-gcc test.c
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 00008018
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0x18): undefined reference to `_sbrk'
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-writer.o): In function `_write_r':
writer.c:(.text+0x20): undefined reference to `_write'
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-closer.o): In function `_close_r':
closer.c:(.text+0x18): undefined reference to `_close'
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-fstatr.o): In function `_fstat_r':
fstatr.c:(.text+0x1c): undefined reference to `_fstat'
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-isattyr.o): In function `_isatty_r':
isattyr.c:(.text+0x18): undefined reference to `_isatty'
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-lseekr.o): In function `_lseek_r':
lseekr.c:(.text+0x20): undefined reference to `_lseek'
/home/fatblunt/software/gcc-arm/arm-2009q3/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/libc.a(lib_a-readr.o): In function `_read_r':
readr.c:(.text+0x20): undefined reference to `_read'
collect2: ld returned 1 exit status
To by problém nebyl,ovšem naprosto stejnou chybu najdu také v souboru config.log konfiguračního skriptu balíku glibc které tím pádem pro ARM nezkompiluju.... Prostě se nemůžu hnout z místa. Nemáte nějaký recept na to jak to vyřešit? Vzhledem k časové tísni bych se spokojil i s linkem na nějaké livecd nebo distro co má toolchain integrovaný... předem děkuju za odpovědi.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (xHire)
Pavel Stárek avatar 1.11.2010 14:29 Pavel Stárek | skóre: 44 | blog: Tady bloguju já :-) | Kolín
Rozbalit Rozbalit vše Re: ARM Crosscompiling
Odpovědět | | Sbalit | Link | Blokovat | Admin
A z toho plyne, že je potřeba stáhnout buď arm-2010q1-189-arm-uclinuxeabi.bin, nebo arm-2010q1-202-arm-none-linux-gnueabi.bin. Z nichž první obsahuje knihovnu uClibc, a druhý obsahuje klasickou (g)libc - obě překompilované pro ARM architekturu. Zkoušel jsem to na Windows a verze arm-2010q1-188-arm-none-eabi sice kompilovala nějaké binárky, avšak pouze dynamicky linkované a samozřejmě se předpokládá, že na cílovém systému už bude knihovna (g)libc nainstalovaná. S těmi dvěma toolchainy co jsem uvedl nahoře, lze buildovat i statické binárky, což je dobré když například nevíš co je na cílovém systému vlastně nainstalováno.
Kdo chce, hledá způsob; kdo nechce, hledá důvod.
2.11.2010 15:10 Matlák
Rozbalit Rozbalit vše Re: ARM Crosscompiling
Děkuju moc za linky, oba balíky jsou blbuvzdorné instalátory s java GUI jako by Windows z okna vypadly :-) a ještě si přitáhly vlastní JRE :-) Povedlo se mi nainstalovat korektně ten který mi vytvoří ARM-ELF binárku, dokonce i statickou. Zatím to mám odzkoušené v qemu, doufám že na skutečném HW se to bude chovat stejně.. ještě jednou dík.
Pavel Stárek avatar 2.11.2010 16:27 Pavel Stárek | skóre: 44 | blog: Tady bloguju já :-) | Kolín
Rozbalit Rozbalit vše Re: ARM Crosscompiling
Není zač. Napiš pak, jestli to fungovalo i na reálném HW.
Kdo chce, hledá způsob; kdo nechce, hledá důvod.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.