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 :

Erreur de compilation avec g++ [SDL 2.0]


Sujet :

SDL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Erreur de compilation avec g++
    Bonjour,

    J'essaie de compiler un projet c++ sur Linux. J'ai suivi ce tuto http://alexandre-laurent.developpez....configuration/, j'ai fait un ./configure et make.
    J'ai aussi fait la même architecture que dans le projet. Premier doute si j'ai bien compris, je devais copier/coller les fichiers .h de la SDL2-2.0.3 dans mon include et les .a et .so dans le lib.

    Puis je compile avec la commande : g++ -Wall -Wextra src/main.cpp -L./lib -I./include/ -lSDL2-2.0.3 -o main
    J'obtiens le message d'erreur suivant :
    /usr/bin/ld: ne peut trouver -lSDL2-2.0.3
    collect2: error: ld returned 1 exit status

    Mon erreur est une erreur de lien si j'ai bien compris mais je ne sais pas comment la résoudre.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Au moment du tutoriel, la SDL2 n'était pas présente dans les packages des distributions GNU/Linux. Du coup, il y avait obligation de compiler soi même la SDL, à partir des sources.
    Maintenant, ce n'est plus nécessaire, la SDL2 a été intégrée dans les distributions.

    Du coup, je vous conseille d'utiliser votre gestionnaire de paquets et d'installer le paquet SDL2-dev , ou SDL2-devel ou un nom similaire.
    Ensuite, vous pourrez compiler de la plus simple des manières avec :
    g++ -Wall -Wextra ./main.cpp -o ./main -lSDL2
    Sinon, vous semblez avoir bien suivi le tutoriel .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour, merci de votre réponse

    Mais malheureusement ça ne fonctionne toujours pas

    Je vais expliquer plus en détail mon problème.

    Je dois faire un projet dans le cadre d'un de mes cours à l'université. Lorsque nous aurons rendu nos projet, le prof ne dois rien avoir à installer sur sa machine ou sur celle de la fac pour faire fonctionner nos codes. En gros il tape juste make et ça fait tout le reste.

    C'est pourquoi lorsque j'ai essayé d'installer le paquet libsdl2-dev ça n'a pas fonctionné : vu que je suis sur un des postes de ma faculté, je n'ai pas les droits de superutilisateur.

    Toutes les bibliothèques non-standards qu'on utilise doivent être fournies avec le code de nos projet. Du coup comment je peux faire fonctionner les librairies sans avoir besoin des droits utilisateurs ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 252
    Points : 649
    Points
    649
    Par défaut Simplification
    Je te conseillerai de copier tout le dossier SDL et de lier avec -lSDL2. Au moins dans les versions 1.x ça fonctionnait sans le 2. Sinon tu peux aussi comparer avec ce que génère un IDE surtout que certains sont mentionnés dans le didacticiel. En plus certains comme Code::Blocks bénéficient d'un assistant !

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Quel est le message d'erreur de G++ ?
    Pouvez-vous nous faire un "tree" sur votre projet.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Voici l’arborescence de mon projet

    /
    include
    - SDL2
    -- tous les fichiers .h
    lib
    - libSDL2.so
    - libSDL2-2.0.so.0
    - libSDL2-2.0.so.0.2.1
    src
    - main.cpp
    main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -Wall -Wextra src/main.cpp -I./include -L./lib -lSDL2 -o main
    ça compile
    Ça affiche comme message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./main: error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 252
    Points : 649
    Points
    649
    Par défaut
    T'as essayé de copier le fichier non trouvé dans le dossier src ou celui où il y a ton exécutable ? Apparemment le système va pas chercher dans lib. Parfois faut jongler avec les chemins…

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Non sur linux , il faut le mieux installer la libSDL2 avec les packages officiel , de base il lit les .so que sur certain dossiers (usr/lib et /lib) mais meme si tu fait un copier coller dessus ça marchera pas faudra utiliser une command spécifique (que je me souvient plus du nom) pour qu'il réactualise les .so disponible.

    Je dois faire un projet dans le cadre d'un de mes cours à l'université. Lorsque nous aurons rendu nos projet, le prof ne dois rien avoir à installer sur sa machine ou sur celle de la fac pour faire fonctionner nos codes. En gros il tape juste make et ça fait tout le reste.
    Ton prof sait que en C stantard il n'y a pas de GUI possible ? donc si tu peux rien installer , faire une fenêtre et afficher des graphisme e semble peu possible (ou alors tu passe par X11 si la machine cible tourne sur linux).

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Ah, ça compile, donc c'est cool. Pour le lancement, il faut indiquer où le programme doit trouver ses dépendances (les bibliothèques (.so sous Linux)). Pour ce faire, ce sera, la commande :
    LD_LIBRARY_PATH=./lib ./main
    (Une définition de variable au moment du lancement du programme). Ainsi, le programme cherchera aussi, ses bibliothèques dans notre dossier lib. Généralement, lorsque j'ai besoin de cela, je rajoute une règle "run" dans mon Makefile, pour lancer le programme en tapant juste make run.

    @Kannagi, je crois que la commande, c'est ldconfig mais faut être root
    @Kannagi, l'OP nous avait indiqué qu'il n'avait pas le droit d'installer, sinon, je n'aurai pas continuer sur la piste de l'embarquement des SO (chose qui ne me plait pas, car spécifique à l'architecture et donc non portable).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci, ça compile et ma première fenêtre s'affiche. J'ai testé sur une session d'une amie et ça fonctionne aussi donc c'est parfait.

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

Discussions similaires

  1. Erreur de compilation avec Excel_2k
    Par Debure dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/06/2006, 14h51
  2. Erreur de compilation avec APRO
    Par netchip dans le forum Langage
    Réponses: 1
    Dernier message: 22/04/2006, 23h12
  3. Erreur de compil avec Outp
    Par sixon dans le forum C++
    Réponses: 2
    Dernier message: 27/02/2006, 15h01
  4. Erreur de compilation avec SWITCH et CASE
    Par barbarello dans le forum C++
    Réponses: 4
    Dernier message: 21/01/2006, 21h47
  5. [FreePascal]Erreur de compilation avec Dev-Pascal
    Par youngeikichi dans le forum Free Pascal
    Réponses: 3
    Dernier message: 17/02/2005, 14h22

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