Portál AbcLinuxu, 10. května 2025 05:27

Dotaz: Jak na cross compile - x86 kod kompilovany na x86_64 hostu ?

8.9.2009 15:04 JB
Jak na cross compile - x86 kod kompilovany na x86_64 hostu ?
Přečteno: 251×
Odpovědět | Admin

Ahoj,

 

Jak na cross compile  - x86 kod kompilovany na x86_64 hostu.

 

Konkretne:

- mam Fedora 11 x86_64, GCC 4.x

- mam projekt pouzivajici vlastne jen STL a chci ho prelozit tak aby sel spustit na Fedora 11 x86 (tedy 32bit)

- projekt je v CMake => generuji Makefile build system

Zkousel jsem virtualizaci, ale to je neskutecne pomale a i jednoduchy helloworld tam trva veky.

Zkousel jsem g++/gcc -m32 a myslim,ze to je cesta, ale linker nenajde nejaky ojektovy moduly nebo libka.

Zkousel jsem -m32 + setarch i386 a to take nepomohlo.

Myslim, ze musim neco doinstalovat, ale nevim co.

ps pro chytraky:

Pokud nechcete poradit a chcete machrovat, ze umite hledat na google, tak ani nepiste.

 

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

Odpovědi

8.9.2009 15:14 Dan Horák | skóre: 21
Rozbalit Rozbalit vše Re: Jak na cross compile - x86 kod kompilovany na x86_64 hostu ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odpověď je chroot, respektive nástroj "mock". Ten je sice primárně určen na buildování rpm, ale lze ho použít i pro pouhé vytvoření chrootu.
8.9.2009 21:22 Murry | skóre: 16 | Brno
Rozbalit Rozbalit vše Re: Jak na cross compile - x86 kod kompilovany na x86_64 hostu ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tato otazka by mne take zajimala, muj problem spocita v tom ze mam x86_64 a chci x86, ovsem projekt je v Qt + malikonko std. Plan je: Musím mít 32bit knihovny qt&std v systemu a pak to nejak zazrakem slinkovat. Ale jak?
8.9.2009 22:23 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jak na cross compile - x86 kod kompilovany na x86_64 hostu ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Musíte si doinstalovat 32b knihovny s kterými se má váš program slinkovat. Pak záleží, jak máte nastavený toolchain (binutils a gcc).

Při klasickém křížovém překladu máte vlastní toolchain i pro cílovou platformu, takže používáte ten na místo standardního. Křížový toolchain má v sobě zakompilované cesty k 32b knihovnám, takže pak se už nic jiného nenastavuje a vše funguje samo.

Pokud byste chtěl použít standardní toolchain, tak tam budete muset přesvědčovat gcc a ld (a ostatní nástroje z binutils), aby knihovny hledali jinde a samozřejmě aby vyráběli 32b binárky.

Jak to má udělané Fedora, netuším.

U vás je problém, že pro řízení překladu používáte CMake. Autotools tohle všechno řeší jedním přepináčem --build a --host. Ale řekl bych, že i CMake to bude mít vyřešené. Podívejte se do jeho dokumentace.

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.