#1 Le 07/11/2013, à 00:28
- chaduf
[Résolu]Probleme de compilation SDL2 avec gcc
Bonjour à tous,
J'ai téléchargé un template de projet SDL2 sur un site ( je ne sais pas si je peux le nommer )
Ce dernier se présente sous cette forme
->Projet
|-> include
| \-> SDL2
|-> lib
|-> Makefile
\-> src
\-> main.c
dans le dossier SDL2 j'ai tout les headers SDL2 (SDL2.h y compris)
dans le dossier lib j'ai les .so : libSDL2-2.0.so, libSDL2-2.0.so.0, libSDL2-2.0.so.0.0.0, libSDL2.a et libSDL2main.a
dans le fichier main.c j'ai :
#include <SDL2/SDL.h>
#include <stdio.h>
int main(int argc, char** argv)
{
/* Initialisation simple */
if (SDL_Init(SDL_INIT_VIDEO) != 0 )
{
fprintf(stdout,"Échec de l'initialisation de la SDL (%s)\n",SDL_GetError());
return -1;
}
{
/* Création de la fenêtre */
SDL_Window* pWindow = NULL;
pWindow = SDL_CreateWindow("Ma première application SDL2",SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
SDL_WINDOW_SHOWN);
if( pWindow )
{
SDL_Delay(3000); /* Attendre trois secondes, que l'utilisateur voit la fenêtre */
SDL_DestroyWindow(pWindow);
}
else
{
fprintf(stderr,"Erreur de création de la fenêtre: %s\n",SDL_GetError());
}
}
SDL_Quit();
return 0;
}
dans le Makefile :
all:
gcc -Wall -Wextra -L./lib -I./include -lSDL2-2.0 src/main.c -o main
run:
LIBGL_DEBUG=verbose LD_LIBRARY_PATH=./lib ./main
clean:
rm -f ./main
Lorsque je tente de compiler avec make j'obtient ceci :
gcc -Wall -Wextra -L./lib -I./include/SDL2 -lSDL2-2.0 src/main.c -o main
src/main.c: In function ‘main’:
src/main.c:5:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
src/main.c:5:27: warning: unused parameter ‘argv’ [-Wunused-parameter]
/tmp/ccBWpHRq.o: In function `main':
main.c:(.text+0x15): undefined reference to `SDL_Init'
main.c:(.text+0x1e): undefined reference to `SDL_GetError'
main.c:(.text+0x6e): undefined reference to `SDL_CreateWindow'
main.c:(.text+0x83): undefined reference to `SDL_Delay'
main.c:(.text+0x8f): undefined reference to `SDL_DestroyWindow'
main.c:(.text+0x96): undefined reference to `SDL_GetError'
main.c:(.text+0xb7): undefined reference to `SDL_Quit'
collect2: error: ld returned 1 exit status
make: *** [all] Error 1
En principe tout est dans le dossier du projet, les chemins vers les bibliothèques sont spécifiés au compilateur le dossier d'include suplémentaire est spéciifié et les fonctions utilisé sont soit directement présente dans SDL.h soit dans les headers inclus dans ce dernier. Je ne vois absoluement pas ce qu'il lui faut de plus .
Si une âme charitable pouvait m'aider à résoudre ce problème, je lui en serais plus que reconnaissant ...
J'ai passé mon après-midi dessus.
Merci de votre aide
Dernière modification par chaduf (Le 07/11/2013, à 11:58)
Hors ligne
#2 Le 07/11/2013, à 04:55
- pingouinux
Re : [Résolu]Probleme de compilation SDL2 avec gcc
Bonjour,
Je vois au moins cette anomalie :
->Projet
|-> include
| \-> SDL2
|-> libs
|-> Makefile
\-> src
\-> main.c
all:
gcc -Wall -Wextra -L./lib -I./include -lSDL2-2.0 src/main.c -o mainrun:
LIBGL_DEBUG=verbose LD_LIBRARY_PATH=./lib ./main
Hors ligne
#3 Le 07/11/2013, à 08:02
- chaduf
Re : [Résolu]Probleme de compilation SDL2 avec gcc
Merci,
En fait c'est une erreur que j'ai faite en recopiant sur le topic. Le dossier s'appelle bien lib et non libs. Désolé (je vais le corriger). Mais merci.
Hors ligne
#4 Le 07/11/2013, à 08:23
- pingouinux
Re : [Résolu]Probleme de compilation SDL2 avec gcc
Tu peux essayer comme ceci :
gcc -Wall -Wextra src/main.c -o main -L./lib -I./include -lSDL2-2.0
Hors ligne
#5 Le 07/11/2013, à 08:45
- chaduf
Re : [Résolu]Probleme de compilation SDL2 avec gcc
j'obtient ceci :
src/main.c: In function ‘main’:
src/main.c:5:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
src/main.c:5:27: warning: unused parameter ‘argv’ [-Wunused-parameter]
/usr/bin/ld: warning: libts-1.0.so.0, needed by ./lib/libSDL2-2.0.so, not found (try using -rpath or -rpath-link)
Hors ligne
#6 Le 07/11/2013, à 09:41
- pingouinux
Re : [Résolu]Probleme de compilation SDL2 avec gcc
Apparemment, ce ne sont que des "warning". As-tu essayé d'exécuter main qui a dû être généré ?
Hors ligne
#7 Le 07/11/2013, à 09:54
- chaduf
Re : [Résolu]Probleme de compilation SDL2 avec gcc
En effet ca marche.
Merci beaucoups. Mais Il y a une chose que je ne comprend pas bien. On m'avait dit que l'ordre des arguments de gcc importait peu, pourquoi ici ca pose problème ? (j'avait déjà éssayé d'interchanger les arument mais jamais de mettre le -o et la dependance avant les dossiers d'includes et de bibliotheques)
Encore merci
Hors ligne
#8 Le 07/11/2013, à 10:09
- pingouinux
Re : [Résolu]Probleme de compilation SDL2 avec gcc
Ça fait déjà "un certain temps" que la façon dont les librairies sont chargées par ld a été modifiée. D'après ce que j'ai compris, ld ne charge maintenant une librairie que s'il sait en avoir besoin, et ce n'est pas le cas si ces librairies sont placées en tête.
Hors ligne
#9 Le 07/11/2013, à 11:56
- chaduf
Re : [Résolu]Probleme de compilation SDL2 avec gcc
OK, je vois. Merci
Hors ligne