Utiliser SDL avec NASM sous linux - ASM - Programmation
Marsh Posté le 22-01-2005 à 12:57:56
J'ai réussi
En cherchant (pas mal) sur google, j'ai finalement réussi à tomber sur ce code http://icps.u-strasbg.fr/~marchesin/sdl/sdl_asm.tgz (merci à Stephane Marchesin au passage ). Pour compiler, j'ai donc du modifier le programme comme suit:
Citation : |
(juste remplacer les _start par des main).
On assemble avec nasm -f elf tetris.asm
Ensuite il faut lier en passant par gcc:
gcc tetris.o -o tetris -lSDL
Et apparemment ça marche
Bon, j'ai plus qu'à coder quelque chose de plus visible pour confirmer ça...
Sinon est-ce qu'il y a moyen de lier sans passer par gcc ?
Marsh Posté le 22-01-2005 à 15:52:01
__Goffi__ a écrit : |
et en liant avec ld, ça marche pas ?
edit: ld -s -o tetris -lSDL tetris.o
Marsh Posté le 22-01-2005 à 17:41:30
Nope, comme je l'ai dit dans mon premier post, le shell me sort:
zsh: no such file or directory: ./tetris
Ce qui est pour le moins étrange
Marsh Posté le 22-01-2005 à 18:16:35
__Goffi__ a écrit : Nope, comme je l'ai dit dans mon premier post, le shell me sort: |
as tu rendu ton fichier exécutable avec chmod ?
Marsh Posté le 22-01-2005 à 18:39:56
ReplyMarsh Posté le 22-01-2005 à 18:40:43
et si tu fais un "ls" dans le répertoire, t'as bien tetris ?
Marsh Posté le 22-01-2005 à 19:47:48
vi vi
Y'a bien un tetris avec les bonnes permissions.
J'ai même fait une helloworld que j'ai assemblé de la même façon et lié de la même façon (sans le -lSDL), pour vérifier que je faisais pas une erreur de syntaxe quelques part, et là aucun problème. Par contre, quand je lie mon helloworld avec -lSDL, j'ai à nouveau no such file or directory (alors que le fichier est bien présent et executable)
Marsh Posté le 22-01-2005 à 21:42:33
On m'a donné la solution sur comp.lang.asm.x86, que je recopie ci dessous:
Citation : |
Et il faut remettre _start à la place de main
(Merci à Johannes Kroll)
Ceci dit, je ne comprends pas le no such file...
Edit: On passe de 8326 octets avec la méthode GCC à 2438 octets avec celle-ci.
Marsh Posté le 02-12-2005 à 00:22:29
Bonjour,
Merci pour vos infos qui m'ont aidé à utliser YASM sous Linux Debian AMD64.
Je voulais faire un petit topic sur la pages ASM, mais je me suis trompé, il est
sur la page C :
http://forum.hardware.fr/hardwaref [...] 1049-1.htm
Nicolas
Marsh Posté le 22-01-2005 à 10:11:16
Bonjour,
j'amerais utiliser SDL avec NASM sous linux, mais je ne sais pas comment lier mon code
Je veux assembler ce petit code:
EXTERN SDL_Init
SECTION .text
global _start
_start
;SDL_Init (SDL_INIT_VIDEO)
PUSH dword 0x20 ; SDL_INIT_VIDEO
call SDL_Init
MOV EAX,1
MOV EBX,0
INT 0x80
J'assemble donc avec nasm -f elf tetris.asm. Pour lier, j'ai essayé les 2 commandes suivantes
ld tetris.o -lSDL -o tetris
ld tetris.o /usr/lib/libSDL.a -o tetris
Quand je tape ./tetris après la première, j'ai le droit à "zsh: no such file or directory: ./tetris" , alors que le fichier est bien présent !
la deuxième m'affiche des undefined references en boucle
Bref, comment je dois faire ?
Merci d'avance
PS: j'ai NASM version 0.98.38, donc je ne suis pas, a priori, concerné par le bug dont parle la FAQ de SDL.