Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Překlad 32-bitového objektového kódu na 64-bitovém stroji  (Přečteno 1640 krát)

DavidK

  • Návštěvník
  • Příspěvků: 7
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ě?

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
« Odpověď #1 kdy: 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)
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

q66

Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
« Odpověď #2 kdy: 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
sw engineer @ samsung research UK, efl developer
octaforge developer (https://octaforge.org)
freebsd user

Martin - ViPEr*CZ*

Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
« Odpověď #3 kdy: 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.
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

DavidK

  • Návštěvník
  • Příspěvků: 7
Re: Překlad 32-bitového objektového kódu na 64-bitovém stroji
« Odpověď #4 kdy: 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

 

Provoz zaštiťuje spolek OpenAlt.