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:
 ). 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.