Portál AbcLinuxu, 10. května 2025 05:27
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.
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.