Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] L'installer sous linux :s

( Fedora core 4 )

Sujet résolu
    20 février 2006 à 21:05:55

    Bonjour bonjour !
    Alors voilà j'essaye d'installer la lib SDL, mais bien sûr, je n'y arrive pas ^^
    j'ai tout téléchargé, (enfin je crois :euh: ) j'ai donc : SDL-1.2.9-1.i386.rpm et SDL-1.2.9.zip.
    et donc j'ai essaye de trouver des docs pour installer mais à chaque fois sa marcher pas... j'ai voulu installer SDL-1.2.9-1.i386.rpm, mais bon sa marche pas comme sa ^^
    J'aimerais bien que quelqu'un m'aide :-°
    Merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2006 à 23:14:00

      Hum. Je voudrais pas critiquer, mais tu sais pas utiliser un utilitaire qui télécharge automatiquement les paquets et les installe, comme apt-get, urpmi, yum ?
      (je sais pas comment ca s'appelle sous fedora)

      À ce niveau, c'est pas un problème de C, c'est un problème avec ton OS :S
      • Partager sur Facebook
      • Partager sur Twitter
        21 février 2006 à 8:50:31

        Tu télécharge les sources et tu fais :
        ./configure && make && make install
        • Partager sur Facebook
        • Partager sur Twitter
          21 février 2006 à 17:31:03

          c'est se que j'ai vue, mais sa marche pas :S

          ouais c'est vrai que c'est pas sa place ici ^^ désolé!
          • Partager sur Facebook
          • Partager sur Twitter
            21 février 2006 à 18:50:49

            Tu as redémarrer ?
            Ca fonctionne tjs pas.
            Tu fais quoi pour tester ?
            Tu as bien mis les options du linker -lSDL ?
            • Partager sur Facebook
            • Partager sur Twitter
              21 février 2006 à 19:25:01

              j'ai redémarrer, et nan ça fonctionne toujours pas..
              je test, bah j'ai fait un nouveau projet avec code::blocks, et y a déjà du code dedans ^^
              mais il me met :

              Citation : code::blocks build log

              Switching to target: default
              Compiling: main.cpp
              g++: `sdl-config : Aucun fichier ou répertoire de ce type
              cc1plus: erreur: option "-fcflags`" de la ligne de commande non reconnue
              Process terminated with status 1 (0 minutes, 0 seconds)



              heu bah je crois ^^ lol

              edit : nan nan c'est pas bon linker :S, c'est quoi le bon ?
              • Partager sur Facebook
              • Partager sur Twitter
                21 février 2006 à 19:55:37

                En fait sous linux le mieu, c'est de compiler à la main pour tester !
                Un make et install, ne vas te l'installer dans le répertoire de CodeBlock ! Donc forcément !
                Voici un petit Makefile pour que tu teste correctement !
                Sous, linux, le mieu, c'est emacs et makefile ! (Mais ce n'est qu'un avis personnel !)
                En tous cas, si tu es motivé voici de quoi comprendre :
                CPP=g++
                CFLAGS=-O3
                LDFLAGS=-lSDL
                EXEC=main

                all: ${EXEC}

                ${EXEC}: ${EXEC}.o
                ${CPP} $(CFLAGS) -o ${EXEC} ${EXEC}.o ${LDFLAGS}

                ${EXEC}.o: ${EXEC}.cpp
                ${CPP} $(CFLAGS) -c ${EXEC}.cpp


                clean:
                rm -fr *.o
                rm -fr *~
                rm -fr music.raw

                mrproper: clean
                rm -fr ${EXEC}


                C'est un peu le bordel, car c'est le truc de base ! Tu n'as juste qu'à changé main par le nom de ton fichier cpp
                Voici le code pour mieu comprendre :


                all: projet

                #On linke les fichiers compilés
                projet: projet.o
                g++ -O3 -o projet projet.o -lSDL

                #On compile le code source
                projet.o: projet.cpp
                g++ -O3 -c projet.cpp

                #Un fonction pour nettoyer le repertoire
                clean:
                rm -fr *.o
                rm -fr *~
                rm -fr music.raw

                #Un fonction pour ne laisser que le code utile à la compilation
                mrproper: clean
                rm -fr projet


                Si tu n'as pas bien compris, tu pourras toujours te renseigner sur http://gl.developpez.com/tutoriel/outil/makefile/

                Bon courage
                • Partager sur Facebook
                • Partager sur Twitter
                  21 février 2006 à 20:03:34

                  Humhum.. un poil compliquer pour moi çà ^^
                  Mais heu tu crois que je peux un truc pour réussir à utiliser SDL dans code::blocks ? parce-que la ...
                  Sinon, Merci de tes réponses !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 février 2006 à 20:09:01

                    ... Natim, (va te pendre,) quand on a une distribution binaire civilisée, on va pas compiler la SDL pour l'installer -___-"


                    Je chercher "fedora gestionnaire paquet" dans google. Premier lien :
                    http://www.fedora-france.org/modules/wiwimod/index.php?pageid=14&com_id=860&com_rootid=776&

                    Tentes le
                    yum list sdl\*
                    en console, et dis nous ce que ça fait.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 février 2006 à 20:18:48

                      c'est un peux radical bluestorm, non ?!

                      donc j'ai essayé, et il me met :

                      Citation : console

                      Invalid value in repo config for freshrpms::gpgcheck
                      Setting up repositories
                      Reading repository metadata in from local files
                      Installed Packages
                      SDL.i386 1.2.8-4 installed
                      SDL-devel.i386 1.2.8-4 installed
                      SDL_image.i386 1.2.4-1.fc4 installed
                      SDL_mixer.i386 1.2.6-3.fc4 installed
                      SDL_net.i386 1.2.5-5 installed
                      Available Packages
                      SDL-debuginfo.i386 1.2.8-4 updates-released
                      SDL_gfx.i386 2.0.13-2 extras
                      SDL_gfx-devel.i386 2.0.13-2 extras
                      SDL_image-devel.i386 1.2.4-1.fc4 extras
                      SDL_mixer-devel.i386 1.2.6-3.fc4 extras
                      SDL_net-devel.i386 1.2.5-5 extras
                      SDL_sound.i386 1.0.1-0.lvn.1.4 livna
                      SDL_sound-devel.i386 1.0.1-0.lvn.1.4 livna
                      SDL_ttf.i386 2.0.7-1.fc4 extras
                      SDL_ttf-devel.i386 2.0.7-1.fc4 extras

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 février 2006 à 20:34:37

                        visiblement c'est installé, tu as utilisé le rpm avant ?

                        Essaie de faire en console :
                        <code type="console>g++ -lSDL -o test main.cpp</code>, puis de lancer l'executable test.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 février 2006 à 20:49:43

                          ah ouais mince, le rpm, il me dit : qu'il ne trouve pas le paquetage SDL :S
                          je vais tester ton truc !

                          edit : OOOOOH ça marche !!!!!!!!!!! mais pourquoi sa marche pas avec code::blocks ?!
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 février 2006 à 21:29:10

                            Je sais pas, je connais pas code::blocks, et j'ai pas envie de tester.

                            Pourquoi tu codes pas avec emacs ? C'est simple (il faut s'habituer un chouilla au début, mais après c'est cool), l'indentation automatique est trop bien, et avec un ptit script tu peux compiler tout aussi simplement que sous un IDE.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 février 2006 à 21:45:34

                              Ouais pourquoi, je vais essayer !
                              en plus je commence déjà à mabituer au erreur affiché dans la consol ! lol
                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 février 2006 à 0:25:48

                                Salut,
                                Je suis aussi en train d'essayer d'installer SDL sous linux avec code::blocks.
                                J'ai installé sdl et sdl-devel. Dans code::blocks, je les ai ajoutés dans le linker mais quand je compile, il me dis qu'il ne trouve pas -lmingw32 mais apparement c'est une lib pour windows car j'arrive pas a l'installer.

                                Je decide donc d'utiliser emacs et la commande de compilation par console,
                                mais lorsque j'utilise "g++ -lSDL -o test main.cpp" dans le meme dossier que main.cpp, il me dis qu'il y a des erreurs:

                                /tmp/ccqg2CLZ.o: In function `main':
                                main.cpp:(.text+0x22): undefined reference to `SDL_Init'
                                main.cpp:(.text+0x31): undefined reference to `SDL_GetError'
                                main.cpp:(.text+0x56): undefined reference to `SDL_Quit'
                                main.cpp:(.text+0x74): undefined reference to `SDL_SetVideoMode'
                                main.cpp:(.text+0x85): undefined reference to `SDL_GetError'
                                main.cpp:(.text+0xb4): undefined reference to `SDL_RWFromFile'
                                main.cpp:(.text+0xc2): undefined reference to `SDL_LoadBMP_RW'
                                main.cpp:(.text+0xd3): undefined reference to `SDL_GetError'
                                main.cpp:(.text+0x168): undefined reference to `SDL_PollEvent'
                                main.cpp:(.text+0x186): undefined reference to `SDL_MapRGB'
                                main.cpp:(.text+0x197): undefined reference to `SDL_FillRect'
                                main.cpp:(.text+0x1ab): undefined reference to `SDL_UpperBlit'
                                main.cpp:(.text+0x1b9): undefined reference to `SDL_Flip'
                                main.cpp:(.text+0x1d1): undefined reference to `SDL_FreeSurface'
                                collect2: ld returned 1 exit status


                                J'ai l'impression qu'il dit que j'ai pas install SDL ou SDL-devel ou alors qu'il ne trouve pas SDL.h pour l'inclure mais je ne vois pas comment faire.

                                Sinon Likuku, si tu as reussi a compiler, tu peux me dire quels fichier tu as installer et comment tu fais ensuite pour compiler stp.

                                Merci d'avance.
                                +!NiCo!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 février 2006 à 12:55:31

                                  Alors, moi j'ai installé : http://www.libsdl.org/release/SDL-1.2.9.zip , et ensuite pour compiler, bah j'ai fait comme bluestorm a dit !
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 février 2006 à 14:56:57

                                    il faut pas compiler... il faut installer avec le gestionnaire de paquets de ta distribution, bien tout comme il faut.

                                    sous debian/ubuntu :
                                    sudo apt-get install libsdl-dev
                                    (sous debian c'est sans sudo, vous m'avez compris)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 février 2006 à 15:28:05

                                      oui oui, mais quand je dissais pour compiler, c'est quand tu veux compiler ton programme! pas pour l'instalation
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 février 2006 à 21:23:05

                                        J'ai reussi a installer sdl et je compile mes programmes avec la console en tapant :
                                        -pour un projet c++
                                        g++ `sdl-config --cflags` -Wall -c main.cpp
                                        g++ `sdl-config --libs` -o TestSDL01 main.o

                                        -pour un projet c
                                        gcc `sdl-config --cflags` -Wall -c main.c
                                        gcc `sdl-config --libs` -o TestSDL01 main.o

                                        avec main le fichier principal du projet et TestSDL01 le nom de l'executable a creer.
                                        Je fais des petits test trankilou en utilisant la SDL et ca fonctionne a merveille.

                                        Mais je decides de passer a quelque chose de plus consistant.
                                        Je crée un fichier functions.h et un fichier function.cpp
                                        que j'incluent avec #include "functions.h".
                                        Je sauvegarde le tout et je tapes mes commandes dans la console pour compiler mais la ca plante.
                                        En effet, la commande compile sans inclure les fonctions.

                                        Est-ce que quelqu'un sait comment compiler un projet contenant plusieurs fichiers?
                                        Ou bien a une idée de ce qu'il faut que je fasse pour que ca fonctionne?

                                        +!NiCo!
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          22 février 2006 à 22:05:55

                                          tu es sur que ton fichier s'appelle bien "functions.h" et pas "function.h" ?

                                          Si tu as mis un include, ce n'est pas "un projet", c'est juste un fichier, function.cpp, donc ca devrait marcher.

                                          Montre la ligne de compilation que tu utilises, et montre nous le résultat d'un "ls" dans le répertoire où se trouve ton fichier. (et vérifie que ton #include est bon).

                                          Si tu veux résumer tes lignes de compil en une ligne, tu peux faire :
                                          #!/bin/sh
                                          gcc `sdl-config --cflags` -Wall -Werror $1.cpp `sdl-config --lib` -o $1.bin && ./$1.bin

                                          Tu enregistres ca dans "comp.sh", et ensuite pour compiler et executer le fichier "main.cpp" tu fais
                                          sh comp.sh main
                                          .
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            22 février 2006 à 22:29:23

                                            pour plusieurs fichier en cosole moi je fait un:
                                            gcc/g++ -o test(executable) *.cc/*.c
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              23 février 2006 à 9:59:06


                                              J'ai essayé toutes vos propositions mais ca ne marche pas quand meme.

                                              Dans mon projet, j'ai trois fichiers:
                                              • main.c
                                              • funct.c
                                              • funct.h

                                              Voila ce qu'ils contiennent:
                                              -main.c:
                                              #include <stdio.h>
                                              #include <stdlib.h>
                                              #include "funct.h"

                                              int main()
                                              {
                                                      afficheTexte();
                                                      return 0;
                                              }

                                              -funct.h:

                                              void afficheTexte();

                                              -funct.c

                                              void afficheTexte()
                                              {
                                                  printf("salut\n\n");
                                              }

                                              Quand je compile le tout sous Code::Blocks, aucun probleme, ca fonctionne.
                                              Mais si j'essaie de compiler avec la console avec toutes vos propositions,
                                              il m'affiche cette erreur:
                                              /tmp/ccmRp36d.o: dans la fonction « main »:
                                              main.c:(.text+0x1d): référence indéfinie vers « afficheTexte »
                                              collect2: ld returned 1 exit status

                                              Donc a mon avis, il n'inclut pas les fichiers funct puisqu'il ne connait pas la fonction afficheTexte() dans main.c.

                                              Donc j'ai toujours le meme probleme :S.
                                              +!NiCo!


                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 février 2006 à 18:29:22

                                                Je ne vois pas le rapport avec SDL !
                                                Peux-tu donner la ligne de commande que tu utilise pour compiler ? et le resultat de ls
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  23 février 2006 à 19:09:40

                                                  gcc -o test main.c funct.c


                                                  Quand tu as plusieurs fichiers .c, qui ne s'incluent pas les uns les autres, il faut les mentionner tous les deux dans la ligne de compilation.

                                                  Cependant, on peut pas dire que ca corresponde avec ton premier message :
                                                  - c'est pas du c++
                                                  - c'est pas sur la SDL
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 février 2006 à 21:18:09

                                                    Oui je sais que ce n'est ni du c++ et que ca n'a pas de rapport avec la SDL.
                                                    Mais comme mon code ne fonctionnait pas, je l'ai simplifié a l'extreme pour tester que le probleme était bien qu'il n'incluait pas les fonctions.
                                                    S'il ne les incluait pas avec un pti code, il ne les incluait pas plus avec un code complet.

                                                    Sinon, j'ai testé la compilation avec :
                                                    gcc -o test main.c funct.c

                                                    et ca fonctionne (merci bluestorm). L'executable est créé sans qu'il y ait d'erreur.
                                                    Le probleme est que je n'arrive pas a lancer l'exe o_O . Je doubleclique dessus et il ne se passe rien.
                                                    Ca me fais ca pour tous les exe contenant uniquement du code c (si j'utilise sdl, ca le fait pas) que j'ai compilé par la console.
                                                    Si quelqu'un sait a quoi c'est du...

                                                    +!NiCo!
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      23 février 2006 à 22:22:51

                                                      oui, c'est du au fait que ca finit pas par .exe :D

                                                      gcc -o test.exe main.c funct.c


                                                      Je suis désolé, c'est parce que sous linux on a pas besoin de mettre de .exe pour executer ensuite, donc j'ai pas le reflexe.

                                                      Par ailleurs, si tu veux une commande pour compiler puis executer s'il n'y a pas eu d'erreur de compilation :
                                                      gcc -o test.exe main.c funct.c && ./test.exe
                                                      (je pense que ça marche sous windows, sinon essaie de remplacer le ./test.exe par test.exe)
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        24 février 2006 à 8:44:15

                                                        Je suis sous linux aussi. Et si je met le .exe dans la commande, il me crée un fichier de type DOS/Windows que je peut pas ouvrir. Donc je sais toujours pas comment faire.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          24 février 2006 à 18:03:47

                                                          Mets pas le .exe et ensuite, fait
                                                          chmod a+x test
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            24 février 2006 à 18:32:28

                                                            Non non, le binaire produit est directement executable.
                                                            Pour le lancer, c'est :
                                                            ./test


                                                            La ligne "compliquée" devient alors :
                                                            gcc -o test main.c funct.c && ./test
                                                            , mais elle marche aussi avec le .exe.
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              24 février 2006 à 23:48:13

                                                              Oui, c'est ça le bon truc ;)
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [SDL] L'installer sous linux :s

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown