Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: DavidK 17 Června 2011, 15:36:09

Název: Překlad 32-bitového objektového kódu na 64-bitovém stroji
Přispěvatel: DavidK 17 Června 2011, 15:36:09
Zdravím,

nevíte někdo, jestli jde nějak přeložit 32-bitový objektový kód elf na 64-bitovém stroji? Když jsem to zkoušel takto:
Kód: [Vybrat]
gcc -m32 -o hello hello.onapíše chyby:
Kód: [Vybrat]
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../../libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../../libc.a when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: cannot find -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status

Nevíte jak to přeložit? Nebo dělám něco špatně?
Název: Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
Přispěvatel: MacHala 17 Června 2011, 16:53:01
asi ti chybi 32bitove knihovny... jinak podle imho pri prekladu *.o uz neni potreba volit architekturu (ale jisty si nejsem, zrovna jsem na 32b, takze nemuzu otestovat)
Název: Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
Přispěvatel: q66 17 Června 2011, 19:05:33
Zdravím,

nevíte někdo, jestli jde nějak přeložit 32-bitový objektový kód elf na 64-bitovém stroji? Když jsem to zkoušel takto:
Kód: [Vybrat]
gcc -m32 -o hello hello.onapíše chyby:
Kód: [Vybrat]
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../../libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../../libc.a when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: cannot find -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status

Nevíte jak to přeložit? Nebo dělám něco špatně?

potřebuješ balíček gcc-multilib .. a taky ia32-libs*, pokud to má nějaký speciální závislosti
Název: Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
Přispěvatel: Martin - ViPEr*CZ* 17 Června 2011, 21:53:00
Přesně tak ... 100% chybí ty knihovny... to je vidět i z chyby:

Kód: [Vybrat]
/usr/bin/ld: cannot find -lgcc_s
Tady to taky řešili: http://ubuntuforums.org/showthread.php?t=226269
Můžete doinstalovat a nebo si ve virtualu spustit systém 32bitový pro takovéto věci.
Název: Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
Přispěvatel: DavidK 19 Června 2011, 18:56:45
Díky za rady, už to funguje.

Nakonec jsem našel toto řešení:
Opravdu bylo třeba nainstalovat gcc-multilib.
A poté slinkovat:
Kód: [Vybrat]
sudo ln -s /usr/lib/libgccpp.so.1.0.2 /usr/lib/libgccpp.so