Installation logiciels

Résolu
Bonjour à tous,
Oui, encore ;-)
Je rencontre des problèmes à l'installation de plusieurs composants :
configure: error: C compiler                   cannot create executables
J'ai lu sur plusieurs forums qu'il fallait installer libc6, maintenant, le problème, c'est que le seul libc6 que je trouve est une archive .deb que je ne peux pas installer (SuSE 10.1), je trouve par contre des libc 5.1, libc5.3. La question : Ou trouver Libc6 ?

Merci :)
--
L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...

26 réponses

Résumé de la discussion

Le problème principal est l'erreur configure: error: C compiler cannot create executables sur SuSE 10.1, liée à l'absence ou l'incompatibilité de libc6, les paquets libc5 et autres versions obsolètes. Des propositions essentielles incluent l'installation de glibc et glibc-devel, la vérification des dépendances, puis une compilation éventuelle dans le répertoire personnel et l'exécution de make install en racine. D'autres préconisent de vérifier l'espace disque avec df et d'éprouver la compilation d'un petit programme en C pour confirmer le fonctionnement du gcc. Certaines remarquent aussi le recours à des paquets spécifiques pour SuSE, comme des versions glibc compatibles ou des sources rpm, tout en évoquant des soucis de headers ou d'incompatibilités.

Bobot (l’IA à votre service)
  1. Modérateur
    :) J'ai trouvé une autre solution, d'autres pilotes.
    Et au moment de cherger le module :
    PRECISION:/home/administrateur # modprobe rt2500
    FATAL: Error inserting rt2500 (/lib/modules/2.6.16.13-4-default/extra/rt2500.ko): Invalid module format
    :-(
    D'après Google, ça viendrait de mauvais headers ? Comment savoir et les remplacer ou installer ce qu'il faut ?
    Merci
    1. Modérateur
      Ah si, je suis embetté pour installer les pilotes de mon adaptateur Wi-fi :
      PRECISION:/home/administrateur/rt2500-1.1.0-b3/Module # make && make install
      make[1]: Entering directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
      make -C ../../../linux-2.6.16.13-4 O=../linux-2.6.16.13-4-obj/i386/default modules
        CC [M]  /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.o
      Dans le fichier inclus à partir de /home/administrateur/rt2500-1.1.0-b3/Module/mlme.h:38,
                à partir de /home/administrateur/rt2500-1.1.0-b3/Module/rtmp.h:45,
                à partir de /home/administrateur/rt2500-1.1.0-b3/Module/rt_config.h:147,
                à partir de /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:50:
      /home/administrateur/rt2500-1.1.0-b3/Module/oid.h:108:5: attention : « RT2500_DBG » n'est pas défini
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:57: error: erreur de syntaxe before string constant
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:57: attention : type defaults to `int' in declaration of `MODULE_PARM'
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:57: attention : function declaration isn't a prototype
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:57: attention : data definition has no type or storage class
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:61: error: erreur de syntaxe before string constant
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:61: attention : type defaults to `int' in declaration of `MODULE_PARM'
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:61: attention : function declaration isn't a prototype
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:61: attention : data definition has no type or storage class
      /home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.c:883: attention : initialisation d'un type pointeur incompatible
      make[4]: *** [/home/administrateur/rt2500-1.1.0-b3/Module/rtmp_main.o] Erreur 1
      make[3]: *** [_module_/home/administrateur/rt2500-1.1.0-b3/Module] Erreur 2
      make[2]: *** [modules] Erreur 2
      make[1]: *** [modules] Erreur 2
      make[1]: Leaving directory `/usr/src/linux-2.6.16.13-4-obj/i386/default'
      rt2500.ko failed to build!
      make: *** [module] Erreur 1
      PRECISION:/home/administrateur/rt2500-1.1.0-b3/Module #
      

      :-/
      1. Modérateur
        J'ai réussi à faire avec Kaffeine.

        Merci beaucoup ! Je suis content de mon pingouin :)
        1. Modérateur
          J'ai fait :
          -Installation du codec Xvid
          -Installation de Kaffeine
          -Copie depuis ma partition Windows de wmvdmod.dll vers /usr/lib/win32
          - Installation de Media Player Connectivity

          Ca marche pour le wma, wmv, et avi/xvid, lors de la lecture dans la navigateur, le plugin MDC ouvre Kaffeine.
      2. Contributeur
        Je crois le xine est plutot isole au niveau dependences, c.-a-d. il contient certaines codecs/bibliotheques lui meme, donc plus facile a installer, compiler, mais apparamment ca ne semble pas complet. Je ne pense pas que tu gagnes en le compilant toi meme.

        Le vlc semble plus complet mais il necessite beaucoup de bibliotheques exterieures a installer avant. Ici le mieux est peut-etre de le compiler soi meme. Sur le site de videolan il y a la liste des bibliotheques prerequises. Au debut c'est en effet long mais une fois c'est fait, c'est facile de recompiler de nouvelles versions de VLC. Je crois le VLC est aussi bien pour enregister de mpeg2 si on a un tuner TNT sur le PC (usb ou carte pci, peu importe). Ceux qui sont chez Free comme FAI utilisent le VLC aussi pour le multiposte (tele sur le pc+enregistrer) et le Freeplayer (regarder ses fichiers video sur le PC a la tele).
        1. Modérateur
          Si tu as compile toi meme, par exemple xine ou autre chose
          Non, il était déja installé avec SuSE. Faut-il le réinstaller en le compilant ? MPlayer est très minimaliste....

          Je voulais installer VLC aussi, mais les dépendances m'ont fait perdre une heure ou deux, et mes nerfs ont craqués.
          1. Contributeur
            Quand j'ai dit que ca s'intalle dans /usr/local, c'est bien reparti dans l'arbre dans les differents sous-repertoires, par exemple dans /usr/local/bin pour les commandes "gcc", "g++" etc., apres dans /usr/local/man pour les pages man (s'il y en a), dans /usr/local/lib pour certaines bibliotheques et en particulier dans /usr/local/lib/gcc-lib (et la dedans il y a un truc comme
            "i686-pc-linux-gnu/3.3.6/..." dans lequel on trouve les vrais compilateurs (cc1, cc1plus etc., le gcc dans /usr/local/bin/ n'est qu'un programme qui appelle ces compilateurs, ce n'est pas encore le vrai compilateur).

            Pour le video je ne sais pas exactement, ca depend comment tu as installe. Si tu as compile toi meme, par exemple xine ou autre chose, le ./configure cherche certaines bibliotheques et si on ne les a pas ca peut toujours marcher mais avec moins de choses selectionnees, par exemple pas de Xvid. Une bibliotheque importante pour les videos est "ffmpeg" (ca contient mpeg2, mpeg4) et idealement il faut installer ca d'abord et apres compiler "xine" ou aussi "vlc" qui est egalement tres bien:
            http://www.videolan.org/vlc/
            1. Modérateur
              Par contre, (je change un peu de sujet) j'ai installé le codec Xvid, a lecture de fichiers encodés par mes soins (et fonctionnant sous Windows) ne fonctionne qu'avec MPlayer, xine et Kaffeine me disent que le codec n'est pas supporté :-/
              1. Modérateur
                Ca fonctionne !

                est grand pour les anciens disques mais de nos jours ca va
                Oui mais enfin il est pas tout seul sur le disque, j'ai Windows à côté et mes données persos :) Il me reste 1.95Go sur le / après avoir effacé les dossiers. Par contre, je ne sais pas ou il est dans /usr/local, mais je n'ai pas de dossier à son nom (à part le gcc-3.3.6 que j'ai effacé). J'éspère que j'ai pas fait de connerie :-/

                Sinon merci ça marche nickel :)
                1. Contributeur
                  D'apres la commande "df" que tu as faite dans <8> tu as bien plus que 6 Go de libre dans /home et plus que 2 Go dans la racine. Tu peux compiler dans le home, meme en tant qu'utilisateur simple, seulement a la fin le "make install" doit etre fait par root (ne pas oublier "cd /home/blabla/build" apres le "su -" et avant le "make install"). 700 Mo (=0.7 Go) est grand pour les anciens disques mais de nos jours ca va. Apres l'installation (et aussi le test de l'installation !!) tu pourras effacer le "build" et le "gcc-3.3.6", le gcc sera dans /usr/local et ca ne bouffe qu'assez peu de place (peut-etre 100-200 Mo ?).

                  Pour arreter la machine pas besoin de creer un programme C, tu peux executer une commande quelconque (par exemple le "halt", "poweroff", "shutdown", peu importe) dans une horaire bien specifiee en utilisant le "at" (regarder "man at" pour de details). Pour faire de choses plus compliquees on peut faire un script: mettre tous les comandes qu'on souhaite executer dans un fichiers ascii, disons "script.sh", le rendre executable (avec "chmod +x script.sh") et le copier dans /usr/bin/... et apres on pourra l'executer simplement comme "script.sh" et bien sur on pourra appeler le "script.sh" plus tard de facon programmee en utilisant le "at".
                  1. Modérateur
                    Oula, il faut copier le dossier dans "build" ? J'ai pas saisi là, bon, tant pis j'me lance :)

                    J'ai rajouté au configure :
                    && make bootstrap && make install
                    Ca devrait être bon ?
                    J'aurai un chauffage d'appoint pour cette nuit :)

                    il faut prevoir beaucoup de place (autour de 700-800 Mo sur le DD)
                    Ca par conte c'est pas bien cool. Le disque est plein a pratiquement 60% alors que j'ai installé le système depuis deux semaines :(
                    On aura la possibilité de récupérer l'espace ? De virer l'ancien GCC ou les fichiers temporaires générés par l'install ? Parce que d'après ce que j'ai compris, on installe plusieures versions afin d'installer la dernière, et c'est ça qui prend de la place non ?

                    Hors-sujet: Il y a la possibilité de programmer l'arrêt de la machine en ligne de commande ou avec un bout de programme en C (puisque ça marche presque) ?

                    Merci en tout cas !
                    1. Contributeur
                      La il faut installer une version de gcc-3.3.x ou gcc-3.4.x car il y a de nombreux logiciel qui se compile mal (ou pas de tout) avec gcc-4.x, en outre aussi le noyau Linux (le noyau Suse sera patche pour ca mais si tu prends un noyau de www.kernel.org ca risque aussi de faire de problemes si tu souhaite le compiler).

                      Normalement dans les distributions comme Mandriva il y a toujours une version de genre 3.2 ou 3.3 en plus de la 4.x mais pour Suse 10.1 ca ne semble effectivement pas le cas.

                      La question reste quelle est la strategie la plus facile ou plus propre:

                      1) plus facile: chercher les paquets rpm de gcc-... en 3.3 ou 3.4 d'une ancienne version de Suse (9.0 ou similaire ?) et les installer directement a l'aide de rpm ("rpm -Uhv gcc-3.3-blabla.rpm" ou similaire). Peut-etre pour ca il faut avant desinstaller le gcc-4.1. On peut aussi essayer avec les rpms de Mandriva ou Fedora mais pour eviter de problemes de compatibilites une ancienne Suse me parrait mieux (mais ce n'est pas 100% sur non plus!).

                      2) plus propre: telecharger une version gcc-3.xx sous de forme de source
                      http://gcc.gnu.org/
                      ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/
                      et les compiler soi meme, en utilisant le gcc-4.1 pour compiler le gcc-3.x, ca devrait marcher et apres le gcc-3.x se recompile lui meme. Ca marche tres bien meme si c'est un peu long (facilement entre 30 minutes et une heure sur un PC tres rapide, genre 3 Ghz). Si on fait comme ca, on peut l'installer dans /usr/local pour eviter de conflits avec gcc-4.1. Apres il faut mettre /usr/local/bin dans le PATH avant le /usr/bin et le "./configure" prendra le gcc-3.x. Moi je te conseillerais de prendre gcc-3.3.6, le dernier de la branche gcc-3.3.x, car aussi le 3.4.x n'est pas tout a fait compatible a tous les logiciels libres pour les compiler (les deux: gcc-3.4 et 4.x sont assez exigents ou plutot mechants, pour la syntax).
                      Alors tu pourrais prendre:
                      ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-3.3.6/gcc-3.3.6.tar.bz2
                      le deballer et compiler avec:
                      tar xvjf gcc-3.3.6.tar.bz2
                      mkdir build
                      cd build
                      ../gcc-3.3.6/configure
                      make bootstrap
                      make install
                      

                      ici le "make bootstrap" prendra beaucoup de temps et il faut prevoir beaucoup de place (autour de 700-800 Mo sur le DD). Il va compiler trois fois le gcc: d'abord ca utilise gcc-4.1 pour creer une 1ere version gcc-3.3.6 avec cette 1ere version ca cree une 2eme et avec la 2eme une 3eme et si la 2eme et 3eme sont identiques (comme il le faut) on pourra installer.
                      La compilation se passe dans un autre repertoire "build" au lieu dans les sources "gcc-3.3.6". Si tu suis exactement ces instructions (ca fait vraiement deux points "../blabla" dans la ligne avec configure !!!) ca devrait fonctionner. Apres tu pourras l'utiliser avec /usr/local/bin/gcc (ou en mettant /usr/local/bin dans le PATH en 1ere position:
                      PATH=/usr/local/bin:$PATH ).
                      1. Modérateur
                        OK, ça marche :)
                        ... pour certains, la version ne leur convient pas :
                        Checking for cc version ... 4.1.0, bad
                        Checking for gcc version ... 4.1.0, bad
                        Checking for gcc-3.4 version ... not found
                        Checking for gcc-3.3 version ... not found
                        Checking for gcc-3.2 version ... not found
                        Checking for gcc-3.1 version ... not found
                        Checking for gcc3 version ... not found
                        Checking for gcc-3.0 version ... not found
                        Checking for cc version ... 4.1.0, bad
                        *** Please downgrade/upgrade C compiler to version gcc-2.95.x or gcc-3.x! ***

                        :-/
                        1. Modérateur
                          Ah, on dirait qua ça a fait du bon :
                          administrateur@PRECISION:~> gcc test.c
                          administrateur@PRECISION:~>
                          Plus d'erreur.
                          Je vais regarder mes autres log..............
                          1. Contributeur
                            Je ne comprends plus grand chose. Tu peux essayer de desinstaller les trois paquets:

                            compat, glibc-obsolete et shlibs5

                            s'il n'y a pas d'autres programmes qui en dependent. Peut-etre la presence de ces trucs cree trop de problemes d'incompatibilites.
                            Notamment le shlibs5 c'est la libc5 pour les tres vieux systemes (c'etait actuel dans les Linux de 1997-1998 max, apres 1999 c'etait deja glibc=>libc6).

                            Tu pourras toujours reinstaller apres.
                            1. Modérateur
                              Une mise à jour de binutils ne donne rien.
                              En cherchant glibc je tombe là-dessus :
                              http://cjoint.com/data/ggs6ojMoIU.htm
                              Manquerait-il quelque-chose pour qua ça fonctionne ?
                              glibc-devel est bien là, une mise à jour ne donne rien non plus.
                              Pour gcc-machin, je ne vois aps quoi installer d'autre :
                              http://cjoint.com/data/getW7Butw2.htm
                              1. Contributeur
                                Voila, c'est grave docteur ?

                                Il semble que oui. Je ne comprend pas exactement ce message mais ca demontre que quel chose est bousillee ou mal installe dans ton systeme. Je n'ai jamais vu ce genre d'erreur. Notamment il essaie de compiler contre la tres tres tres tres vielle bibliotheque libc5 (meme pas libc6) qui est d'ailleur bien installe chez toi mais c'est seulement pour faire tourner de vieux programmes compiles sur un vieux systeme.

                                Normalement quand tu compiles chez toi il doit prendre ta version actuelle de glibc. Tu dois bien chercher pour les paquet a installer notamment les paquets: "glibc-devel" (ca j'ai deja mentionne une fois !!!) et surtout et absolument 1000000% necessaire les binutils qui contiennent le linker "ld". Je crois actuellement il ne trouve pas le bon "ld" et il prend le "ld" obsolete de "libc5", bref le truc qu'il trouve et ca foire.

                                Soit il te manque de paquets idispensables pour compiler ou soit il y a un bogue serieux avec ton systeme, ta distribution. Cherche d'abord pour binutils, glibc-devel mais apres aussi tout truc gcc-blabla, glibc-blabla, et tout truc developpement en general.
                                1. Modérateur
                                  Il me donne une belle erreur :
                                  administrateur@PRECISION:~> gcc test.c
                                  /usr/lib/gcc/i586-suse-linux/4.1.0/../../../../i586-suse-linux/bin/ld: errno@@GLIBC_PRIVATE: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS definition in /usr/i486-linux-libc5/lib/ld-linux.so.2 section .bss
                                  /usr/i486-linux-libc5/lib/ld-linux.so.2: could not read symbols: Mauvaise valeur
                                  collect2: ld returned 1 exit status
                                  
                                  Voila, c'est grave docteur ?
                                  1. Contributeur
                                    Le /tmp n'est pas plein, donc ce n'est pas ca.

                                    Ca fait quoi la compilation du test.c ? Tu as bien mis les 5 lignes dans un fichier ascii (avec emacs, vi, kedit ou un autre editeur quelconque, peu importe) et apres la commande "gcc test.c" fait exactement quoi comme message ? Si ca ne produit pas le a.out il y a un probleme, soit quelque chose avec ton installation gcc ou soit une erreur de manipulation (par exemple etre dans le mauvais repertoire) . Il faut aussi bien faire attention d'etre dans le bon repertoire de travail ou tu as cree le test.c sinon ca plante simplement parce qu'il ne trouve pas le fichier test.c et apres le a.out.
                                    1. Modérateur
                                      Ca me donne ça :
                                      administrateur@PRECISION:~> df
                                      Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
                                      /dev/hda6 5405652 3090628 2315024 58% /
                                      udev 518048 192 517856 1% /dev
                                      /dev/hda7 7485972 620308 6865664 9% /home
                                      /dev/hda2 18434580 13969812 4464768 76% /windows/C
                                      /dev/hda4 6132864 4241860 1891004 70% /mnt/windows
                                      administrateur@PRECISION:~> df /tmp
                                      Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
                                      /dev/hda6 5405652 3090628 2315024 58% /


                                      Sinon comme la prgrammation ne m'est pas encore monté à l'esprit, j'ai créé un fichier test.c avec les commandes ci-dessus, mais le lancer avec ./a.out ne fonctionne aps

                                      Merci :)
                                      1. Contributeur
                                        Il est possible que la partition ou il y a le repertoire /tmp est completement remplie. Que donne la commande "df" et en particulier "df /tmp" ? Si ca affiche que la partion contenant /tmp est pleine ca expliquerait tout. Il faut prevoir une partition plus grande (proablement la racine "/" serait trop petite).

                                        Essaie aussi de compiler un programe C bidon avec: "gcc test.c" ou "test.c" est un program C que tu as cree par exemple:
                                        #include <stdio.h>
                                        
                                        int main(){
                                          printf("Bonjour\n");
                                        }
                                        

                                        Si ca marche tu pourras l'executer avec "./a.out" (pour afficher "Bonjour").
                                        • 1
                                        • 2