Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad .

Si une âme charitable pouvait m'aider à résoudre ce problème, je lui en serais plus que reconnaissant ... tongue
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 main

run:
        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 big_smile

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