[Mandriva2007] Erreur Compilation

Bonsoir à tous et à toutes.

Je suis nouveau sous Linux, j' en suis à ma 1ère compilation et j' ei le message d' erreur suivant auquel je ne comprends rien :

In file included from /usr/lib/gcc/i586-mandriva-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward/iostream.h:31,
from cclienttoaol30.h:24,
from kernel30.h:50,
from caolcmd30.h:22,
from threadELVmake[2]: quittant le répertoire « /home/julien/Téléchargement/peng/peng »
make[1]: quittant le répertoire « /home/julien/Téléchargement/peng »
2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
kernel30.h:226: error: ISO C++ forbids declaration of ‘CAolCmd30’ with no type
kernel30.h:226: error: expected ‘;’ before ‘*’ token
make[2]: *** [threadELV3.o] Erreur 1
make[1]: *** [all-recursive] Erreur 1
make: *** [all-recursive-am] Erreur 2

Je n' y comprends rien du tout et aurais besoin d' aide pour ceci.
Configuration: Windows XP
Internet Explorer 6.0

14 réponses

  1. Modérateur
    Alors, le C++ est un langage objet, c'est à dire que l'on défini des objets (les classes) et les fonctions qui s'y rapportent. Comme ces classes peuvent être utilisées dans plusieurs programme, afin que chacun puisse en profiter, elles sont déclarées dans des en tête (les headers).

    En C++ dans le temps les headers de la lib c, avaient un nom terminant par ".h", comme par exemple <iostream.h>. Aujourd'hui cette syntaxe est obsolète : on inclue <iostream> mais toutes les classes qui étaient dans ce fichier sont dans le namespace std (par exemple un ostream est devenu un std::ofstream)

    Donc ça, ça correspond à ce message d'erreur
    make[1]: quittant le répertoire « /home/julien/Téléchargement/peng »
    2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated. 

    Le il te dit que pour pouvoir continuer à utiliser l'ancienne syntaxe il faut compiler avec l'option -Wno-deprecated.

    Normalement si c'est bien foutu, il suffit de modifier le fichier Makefile et de chercher la balise qui ajoute les options à passer à g++ (le compilateur C++), qui s'appelle souvent CXXFLAGS ou CCFLAGS. Exemple :
    CXXFLAGS = -W -Wall -Wno-deprecated

    L'erreur qui suit dit qu'il ne connaît pas la classe ‘CAolCmd30’ mais c'est parce qu'en fait il n'est pas arriver à comprendre le fichier caolcmd30.h, probablement à cause de l'erreur précédente. Merci de me reporter ici les 30 premières lignes du fichier en question pour que je puisse confirmer.

    Bonne chance
    1. Merci Mamiemando pour ces explications.

      Je suis nouveau sous linux et néophyte en informatique mais j' ai ouvert le fichier makefile et ai trouvé une ligne "KDE_CXXFLAGS = ", je vais essayer de la bidouiller.
      1. Bonjour.
        Bon, ben, j' ai essayé de rajouter la ligne -W -Wall -Wno-deprecated dans la ligne KDE_CXXFLAGS dans le fichier makefile et makefile.in, mais ça na rien changé et j' ai l' impression que le rajout a tendance à disparaitre à la tentative de compilation.
        Il s' agit d' un programme développé d' abord pour i386, je m' en suis aperçu après coup, et je crois que mon pc est i586, le programme peut-il quand même tourner sur mon PC sans trop de bidouilles.

        Je vais peut-être m' en mordre les doigts, mais en vérité, il me faut peut-être préciser que le logiciel en question est Pengaol 1.05, si cela peut aider.
        1. Si ça peut aider, voici le lien de téléchargement de l' archive .tar en question.

          Je n' y ai pas trouvé de fichiers README ou INSTALL expliquant en détail la marche à suivre, il y a un dossier "doc" avec 5 pages mais selon elles la compilation doit se faire en 1 seconde sans aucun problème. J' ai cherché sur d' autres sites des explications sur l' installation et la compilation mais si je demandes "./configure", on m' annonce que je dois d' abord recompiler, si je demandes à utiliser le fichier "make", on me dit que c' est pas possible ou un truc du genre.
          1. Bonjour Mamie mando et merci encore pour ton aide.
            En fait, j' essayes de compiler les sources contenues dans l' archive Pengaol1.05.tar afin d' installer le dit Pengaol sur mon PC. (toujours le même problème de connexion AOLbox de mes ****).

            Je suis nouveau et j' essayes de suivre les conseils que je trouves mais j' y arrives pas comme j' écrivais.
            1. Modérateur
              C'est marrant en faisant un epitt apt-cache search j'ai trouvé ça :
              (mando@aldur) (~) $ apt-cache search aol
              aolserver4 - AOL Web Server 4 (Program)
              ...
              aolserver4-nsxml - Module for XML support in aolsever4
              grouch.app - AOL and ICQ Instant Messenger client for GNUstep
              html-helper-mode - A popular HTML editing mode for emacs
              naim - A console client for AOL Instant Messenger and IRC
              penggy - connects to AOL via modem or TCP/IP
              pork - Console-based AOL Instant Messenger & IRC client
              sfront - MPEG 4 Structured Audio decoder
              tagtool - tool to tag and rename MP3 and Ogg Vorbis files
              timps - Transparent Instant Messaging Proxy Server

              Apparemment il y a un paquet penggy (sous debian en tout cas) qui fait ce que tu veux. Et il semble exister sous mandriva :
              http://fr2.rpmfind.net/...

              Bref peut-être qu'il suffit de faire en root un petit :
              urpmi penggy

              Bonne chance
              1. Merci de cette info, je vais essayer dans un instant et vous donner le résultat.
                1. Salut,

                  pour compiler et installer Peng il faut d'abord lancer la commande ./recompile

                  si on ouvre le fichier recompile on lit :
                  wim@neptune:~/Desktop/Tarball/peng$ cat recompile
                  #!/bin/sh

                  export CXXFLAGS="-D_REENTRANT"

                  mv configure configure.tmp
                  cp configure.ori configure
                  ./configure --host i386 --target i386
                  rm configure
                  mv configure.tmp configure
                  make clean
                  blabalbla ....


                  c'est peut-être là qu'il faut bidouiller ...

                  :-))
                  1. Ben, j' ai essayé aussi de modifier cette ligne "export CXXFLAGS = -D REENTRANT" (celle là ainsi que celle ou il y avait CXXFLAGS, pas plus) mais ça a pas plus fonctionné. J' essayes les paquetages liés à Penggy et je verrais ce qu' il vaut.
                  2. En fait, le fait de modifier la ligne CXXFLAGS dans le fichier recompile fait que je me vois affiché, lorsque je tapes la commande ./recompile, le message "permission non accordée" même en le faisant en tant que superutilisateur.
                2. Alors, aux dernières nouvelles, je m' arraches les neveux avec un problème digne de la haute administration : Penggy requiert 3 fichiers (libguile-ltdl.so.1, libguile.so.12 et libqthreads.so.12), le site RPMPBone.net me renvoie, pour chacun de ces fichiers, à la page de téléchargement de libguile.12-1.6.8 qui requiert, lui, le fichier guile = 1.6.8 or une recherche de ce fichier me mène à l' installation de libguile12-1.6.8 ou à l' installation de siwg-doc, ce qui ne modifie pourtant rien ensuite à la dépendance en guile = 1.6.8.
                  1. Dites, j' ai une question très conne : que signifie "Polish(ed) Linux Distribution" dans les pages de téléchargement ? que c' est une version stantard pour différentes versions ? (au fait, je ne trouves que des fichiers guile = 1.6.7 sur rpmfind)
                    1. Alors, j' ai trouvé ceci : http://ftp.gnu.org/pub/gnu/guile/

                      J' ai téléchargé l' archive guile-1.6.8, l' ai transféré sur mon fixe, décompressé, configuré, compilé et installé sans problèmes (apparemment, du moins sans messages d' erreurs) et pourtant je ne peux toujours pas installer le paquetage libguile12-1.6.8. (censé convenir à la fois pour les 3 paquetages requis pour Penggy dans mon cas) car il ne trouve pas guile 1.6.8.
                      1. Modérateur
                        Normalement urpmi est sensé t'installer toutes les dépendances, non ? Tu tapes bien dans une console root :
                        urpmi penggy

                        Si tu as des problèmes de urpmi vérifie tes miroirs
                        http://easyurpmi.zarb.org/?language=fr
                        Si tu ne t'en sors pas normalement mandriva propose un gestionnaire de paquets en mode graphique.
                        Sinon pour le polished aucune idée j'ai jamais vu ça. A part te dire cf google je ne sais pas quoi te dire.

                        Bonne chance
                        1. Ben, quand je tapes urpmi ..... en tant que superutilisateur, il m' affiche que le dit fichier ne peut être installé car tel fichier requis est non satisfait et me demande si je veux continuer. J' ai beau lui répondre oui, l' instant d' après le prompteur revient et je vérifies ensuite que le paquetage n' est pas installé.
                          J' ai été voir le lien que tu m' as fourni Mamiemando mais il y a un truc que je piges pas : à l' étape 3 il me dit de taper quelque chose à la console en tant que root apparement afin de me connecter avec le miroir de téléchargement, donc sur une console linux non ?, mais la connexion que j' ai est du fait de mon portable et c' est sur mon fixe que j' ai installé linux et que je galères dans le but de connecter enfin mon fixe (sous linux) à mon AOLbox.
                      2. Modérateur
                        Désolé je ne sais pas comment te dépanner. Sous debian et ubuntu il aurait suffit de télécharger les dépendances et de les mettre dans /var/cache/apt/archives, mais sous mandriva je ne sais pas comment faire. J'ai peur que tu doives télécharger tous les rpm requis sur un pc connecté à internet par exemple via rpmfind.net, et que tu installes ces paquets en root :
                        cd /le/repertoire/des/rpm
                        rpm -ivh *rpm

                        Le truc c'est que tu risques d'avoir des problèmes de dépendances en cascade :s

                        Bon courage (tu vas en avoir besoin)