Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Assembler  (Przeczytany 9328 razy)

deimos21

  • Gość
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

norbert_ramzes

  • Gość
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.

  • Gość
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).

norbert_ramzes

  • Gość
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.

  • Gość
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

norbert_ramzes

  • Gość
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.

deimos21

  • Gość
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