IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Compiler avec GCC et SDL


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut Compiler avec GCC et SDL
    Bonjour,


    Je suis sous windows 10, 64 bits
    j'utilise NotePad++ pour écrire mes programmes en C,
    je compile avec GCC sous MinGW_W64. dans une fenêtre console Windows (cmd)
    j'ai i686-7.2.0-posix-dwarf-rt_v5-rev1 d'installé sur mon PC.

    Après m'être lancé dans la programmation en C , je souhaite m'initier à l'utilisation de la bibliothèque SDL.
    Pour compiler j'utilise le compiler gcc de MinGW (dans le cmd pour compiler mon code je tape habituellement "gcc monfichier.c -o monfichier.exe"
    cela fonctionne parfaitement.

    Je souhaite donc faire la même chose pour mon code en C en utilisant la librairie SDL.
    J'ai suivi des tutos à la lettre mais, pour moi, les explications ne sont jamais assez claire ...

    j'ai téléchargé le fichier : SDL2-devel-2.0.3-mingw.tar.gz
    Je l'ai décompressé, et je trouve plusieurs fois la même chose dans des répertoires différents.

    je trouve :
    Un premier répertoire : SDL2-devel-2.0.3-mingw, et dans ce répertoire un répertoire : SDL2-2.0.3

    Puis, dans le répertoire SDL2-2.0.3, je trouve des répertoires :

    i686-w64-mingw32
    include
    lib
    test
    x86_64-w64-mingw32

    Si j'ouvre ce dernier (par exemple : x86_64-w64-mingw32), je trouve
    bin
    include
    lib
    share

    Si j'ouvre i686-w64-mingw32 je trouve les mêmes répertoire que ceux de x86_64-w64-mingw32

    Je me suis créé sur mon bureau un repertoire qui se nomme Projet1
    j'ai mis les répertoires bin include et lib (de x86_64-w64-mingw32) dedans projet1.
    j'y ai mis mon programme ouvrefenetre.c

    je lance ma console windows et je me mets sur C:\Users\JeanLouis\Desktop\Projet1>
    en lançant mon fichier .bat qui lance la console, je passe les commande suivante :
    echo off
    set PATH=C:\Program Files (x86)\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH%
    cd "C:\Users\JeanLouis\Desktop\projet1"
    "C:\WINDOWS\system32\cmd.exe"

    je tape la commande suivante : gcc ouvrirfenetre.c -L./lib -I./include -lSDL2-2.0

    j'ai l'erreur :
    C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.2.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lSDL2-2.0
    collect2.exe: error: ld returned 1 exit status

    j'ai bien compris que j'allais chercher les .h dans include, les .a dans lib
    je ne comprends pas le -lSDL2-2.0 que je mets dans ma commande GCC.

    Voici mon programme ouvrefenetre.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #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;
    }
    Merci de m'aider.

  2. #2
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    C'est normal puisque en utilisant -l, le linker attend un fichier, pas un dossier

    si tu veux utiliser le dossier -Lmon_dossier
    si tu veux utiliser le fichier -lmon_dossier/ma_lib.a

  3. #3
    Membre très actif
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut
    Merci, j'ai parfaitement compris cela.
    Mais je ne comprends pas ta réponse :

    Si je tape ceci :
    gcc ouvrirfenetre.c -L./lib -I./include -lSDL2-2.0

    -L./lib veut dire aller chercher les .a dans le répertoire lib
    -I./include veut dire aller chercher les .h dans include

    -lSDL2-2.0 veut dire quoi ? le cours me dit de taper ca, mais ca veux dire quoi?
    Je pense que c'est faut, je suis ok avec ca, mais faut mettre quoi a la place ?

    je n'ai pas, ni de repertoire SDL2-2.0 ni de SDL2-2.0.a, je ne comprends pas.

    faut-il aller chercher le SDL2.DLL ?, je ne pige pas....


    je tente de comprendre le cours suivant ici

  4. #4
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    il y a quoi dans lib?

  5. #5
    Membre très actif
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut
    Dans /lib, il y a :

    libSDL2.a
    libSDL2.dll.a
    libSDL2.la
    libSDL2_test.a
    libSDL2main.a

    puis il y a un répertoire : pkgconfig dans lequel il y a un fichier sdl2.pc

  6. #6
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Tu peux donc faire

    gcc ouvrirfenetre.c -llib/libSDL2.dll.a -I./include

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/04/2006, 19h02
  2. [débutant]compiler avec gcc sous linux
    Par Ickou dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2006, 17h27
  3. compilation avec gcc: erreur inhabituelle
    Par artatum dans le forum C
    Réponses: 4
    Dernier message: 12/10/2005, 17h13
  4. Problème de compilation avec gcc
    Par Niktou dans le forum Linux
    Réponses: 9
    Dernier message: 27/09/2005, 15h18
  5. compilation avec gcc : erreurs bizard !!!
    Par CodeurNé dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo