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
-
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:
gcc -m32 -o hello hello.o
napíše chyby:
/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ě?
-
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)
-
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:
gcc -m32 -o hello hello.o
napíše chyby:
/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
-
Přesně tak ... 100% chybí ty knihovny... to je vidět i z chyby:
/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.
-
Díky za rady, už to funguje.
Nakonec jsem našel toto řešení:
Opravdu bylo třeba nainstalovat gcc-multilib.
A poté slinkovat:
sudo ln -s /usr/lib/libgccpp.so.1.0.2 /usr/lib/libgccpp.so