Nowe posty

Autor Wątek: Assembler  (Przeczytany 8931 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 7
    • Zobacz profil
Assembler
« dnia: 2008-03-13, 18:13:20 »
Stawiam pierwsze kroki w assemblerze. Problem zaczął się na sammym początku. Po napisaniu pierwszego programu hello.asm i wykonaniu
 nasm -f elf ./hello.asm
a nastepnie
ld hello.o -o hello
wyskakuje
Cytuj
ld: i386 architecture of input file `hello.o' is incompatible with i386:x86-64 output
Używam Ubuntu 7.10 64-bit, moj cpu: intel e6750

Offline Norbert Kiszka

  • Users
  • Guru
  • *****
  • Wiadomości: 1846
    • Zobacz profil
Assembler
« Odpowiedź #1 dnia: 2008-03-13, 19:49:17 »
Cytat: deimos21
Cytuj
ld: i386 architecture of input file `hello.o' is incompatible with i386:x86-64 output
Sam nie piszę w asemblerze, ale powyższe skierowałoby mnie do man nasm.
"Ostrzeżenie menedżera okien: Okno 0x3e00019 (MPlayer) ustawia atrybut MWM, określający, że jego rozmiar okna jest niezmienny, lecz jednocześnie ustawia minimalny rozmiar na 1 x 1, a maksymalny rozmiar na 440 x 120. To nie ma żadnego sensu."

http://lottalinuxlinks.com/files/linux_mobile.jpg

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 434
    • Zobacz profil
Assembler
« Odpowiedź #2 dnia: 2008-03-13, 22:21:51 »
Problem w tym, że próbujesz połączyć 32 bitowy plik .o z 64 bitowymi bibliotekami (ld dorzuca co nieco do pliku.o, budując z niego binarkę). System masz 64 bitowy to i ld jest 64 bitowe i łączy z 64 bitowymi bibliotekami.
A jeśli nawet nie łączysz programu z żadnymi bibliotekami (nie wiem jak dokładnie wygląda proces budowania binarki przez ld) to i tak ld próbuje stworzyć output 64 bitowy.

Albo skompiluj hello.asm dla architektury x86_64, albo użyj 32 bitowego środowiska do zbudowania binarki (jednak jeśli używasz Ubuntu, to będziesz potrzebował doinstalować to środowisko, bo w 64 bitowych wersjach Debiana i pochodnych domyślnie nie ma bibliotek 32 bitowych; bez tych bibliotek też nie uruchomisz programów 32 bitowych).

Offline Norbert Kiszka

  • Users
  • Guru
  • *****
  • Wiadomości: 1846
    • Zobacz profil
Assembler
« Odpowiedź #3 dnia: 2008-03-13, 22:35:15 »
Cytat: tomek-k
bo w 64 bitowych wersjach Debiana i pochodnych domyślnie nie ma bibliotek 32 bitowych; bez tych bibliotek też nie uruchomisz programów 32 bitowych).
Wydaje mi się że jest inaczej, przynajmniej w sid'zie i lennym.
"Ostrzeżenie menedżera okien: Okno 0x3e00019 (MPlayer) ustawia atrybut MWM, określający, że jego rozmiar okna jest niezmienny, lecz jednocześnie ustawia minimalny rozmiar na 1 x 1, a maksymalny rozmiar na 440 x 120. To nie ma żadnego sensu."

http://lottalinuxlinks.com/files/linux_mobile.jpg

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 434
    • Zobacz profil
Assembler
« Odpowiedź #4 dnia: 2008-03-13, 23:49:08 »
w lennym to jakiś czas temu na pewno nie było, ale dawno już nie miałem okazji instalować, więc nie wiem jak jest teraz. co do sida to też nie wiem.

W każdym razie chodzi o pakiety ia32-libs oraz ia32-libs-dev

Offline Norbert Kiszka

  • Users
  • Guru
  • *****
  • Wiadomości: 1846
    • Zobacz profil
Assembler
« Odpowiedź #5 dnia: 2008-03-13, 23:55:36 »
Teraz to jest domyślnie instalowane i nie powinno być jakichkolwiek problemów z odpalaniem softu pod 32bit.
"Ostrzeżenie menedżera okien: Okno 0x3e00019 (MPlayer) ustawia atrybut MWM, określający, że jego rozmiar okna jest niezmienny, lecz jednocześnie ustawia minimalny rozmiar na 1 x 1, a maksymalny rozmiar na 440 x 120. To nie ma żadnego sensu."

http://lottalinuxlinks.com/files/linux_mobile.jpg

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 7
    • Zobacz profil
Assembler
« Odpowiedź #6 dnia: 2008-03-14, 14:45:49 »
Dzieki. Problem rozwiazany za pomoca nowej wersji nasm:
nasm -f elf64 hello.asm
ld hello.o -o hello
Dziala