Problème de compilation

Résolu
Bonsoir , je ne comprends pas du tout , j'ai bien installer freepascal ( j'ai mis 1 heure ) sur ma mandriva et je n'arrive pas à compiler mon fichier :
[root@lns-bzn-53-82-65-53-189 Documents]# fpc echange.pas
bash: fpc: command not found
[root@lns-bzn-53-82-65-53-189 Documents]# fpcompile echange.pas
bash: fpcompile: command not found

D'où peut venir le problème ?

merci
Configuration: Linux Mandriva
Firefox 1.5.0.7

43 réponses

Résumé de la discussion

Suite à l’installation de Free Pascal sous Mandriva, l’utilisateur ne parvient pas à lancer le compilateur fpc et reçoit l’erreur bash: /usr/local/bin/fpc: cannot execute binary file. Des réponses proposent d’utiliser le chemin absolu du binaire se trouvant dans /home/chocho/tmp/y/bin/fpc ou de créer un lien symbolique vers /usr/local/bin pour que la commande fpc soit directement accessible. En cas de doute sur le chemin d’accès, plusieurs échanges suggèrent d’inspecter PATH et d’utiliser whereis fpc pour confirmer l’emplacement réel du compilateur, qui peut apparaître comme /usr/local/bin/fpc après création du lien. Dernièrement, l’observation reportée est qu’un 'cannot execute binary file' persiste malgré le lien, signalant potentiellement une incompatibilité d’architecture ou des bibliothèques manquantes, nécessitant l’obtention du binaire adapté.

Bobot (l’IA à votre service)
  1. Modérateur
    De rien :-)

    Je ne t'ai pas proposé le .rpm puisqu'il semblais que tu veuille l'installer depuis les sources.

    Bien sûr qu'avec un paquetage c'est plus simple, et recommandé pour la commodité. En revanche si tu veux connaître ce qui est sous le capot alors la ligne de commande est à ta disposition.

    Je te propose 3 tutos dans la faq ccm qui pourront t'aider à comprendre certaines choses :-)
    shell guide d utilisation niveau debutant
    securite droits d acces gnu linux
    bash la variable d environnement path

    Bon continuation :-))
    1. bon... alors là j'ai juste éléchargé le rmp , je suis dans tmp et j'ai ceci :

      ls
      fpc-2.0.4-0.i586.rpm  ksocket-chocho/  orbit-chocho/
      kde-chocho/           mapping-chocho=
      


      ensuite j'ai fait ceci grace au lien que tu m'as filé :

      # rpm -ivh fpc-2.0.4-0.i586.rpm
      Préparation...              ########################################### [100%]
         1:fpc                    ########################################### [100%]
      Running on linux
      Write permission in /etc.
      Found libgcc.a in /usr/lib/gcc/i586-mandriva-linux-gnu/4.1.1
      Writing sample configuration file to /etc/fpc.cfg
      


      et finalement j'arrive à çà :

      fpc test.pas
      Free Pascal Compiler version 2.0.4 [2006/08/20] for i386
      Copyright (c) 1993-2006 by Florian Klaempfl
      Target OS: Linux for i386
      Compiling test.pas
      Linking test
      3 Lines compiled, 0.2 sec
      [root@lns-bzn-53-82-65-53-189 Documents]# ls
      Commandes.odt  echange.pas  test*  test.o  test.pas
      [root@lns-bzn-53-82-65-53-189 Documents]# ./test
      Bienvenue dans GNU Pascal !
      


      J'ai réussi grâce à toi , je te remercie pour ta grande patience sans toi j'y serai jamais arrivé et j'ai appris pleins de trucs ( installé un rpm , la commande ln...) , merci pour tout .
      1. Modérateur
        Non, ce n'est pas vraiment le même lien
        voilà le tien
        http://www.freepascal.org/down/x86_64/linux-ftp.freepascal.org.var

        et voilà le mien
        http://www.freepascal.org/down/i386/linux-ftp.freepascal.org.var

        la différence est en gras
        et moi j'ai installé i386 vu que j'ai
        lami20j@debian:/mnt/hdb5/azureus_lib$ uname -m
        i686
        
        1. Salut lamij , à propos du lien que tu m'as donné c'est le même que le mien je pense vu que j'ai la même erreur de compilation...non?

          merci
          1. Tu as installer Mandriva i686 donc tu dois télécharger ce fpc
            http://www.freepascal.org/down/i386/linux-ftp.freepascal.org.var

            j'ai été le télécharger et tout réinstallé et j'ai la même erreur , à demain :) .
            1. Modérateur
              Bon, je vais quitter maintenant.
              Peut être toi aussi tu dois aller te coucher. Si tu es fatigue tu risque de faire des erreurs.
              On peut voir ça demain.

              Bonne nuit.
              1. Modérateur
                C'est quoi tes répertoires y, n , tu as fait un sacré bordel à l'installation :-))

                Moi j'ai un seul répertoire qui contient tous les sous-répertoire de fpc

                Pour supprimer il faut faire attention

                si y et n ne contient que fpc alors tu peux supprimer comme ça
                rm -vfR /home/chocho/tmp/y
                rm -vfR /home/chocho/Desktop/n
                rm -v /home/chocho/tmp/fpc-2.0.4.x86_64-linux.tar
                su -c "rm -v /usr/local/bin/fpc" 
                1. comment détruire entièrement un fichier sous linux ( ici le fpc évidemment ) ?

                  merci
                  1. Modérateur
                    Je sais pour quoi, et c'est aussi un peu ma faute, je n'ai pas fait attention

                     uname -a
                    Linux lns-bzn-.adsl.proxad.net 2.6.17-5mdv #1 SMP Wed Sep 13 14:32:31 EDT 2006 i686 AMD Athlon(tm) 64 Processor 3200+ GNU/Linux
                    Le fait que tu as un Processeur AMD 64 ne veut pas dire que tu dois télécharger un logiciel x86_64

                    Tu as installer Mandriva i686 donc tu dois télécharger ce fpc
                    http://www.freepascal.org/down/i386/linux-ftp.freepascal.org.var

                    Ce message /usr/local/bin/fpc: cannot execute binary file c'est pour cette raison, l'installation de fpc pour une architecture qui n'est pas la tienne

                    supprime lien
                    su -c "rm -vi /usr/local/bin/fpc" 
                    et aussi le fpc que tu as installer et télécharge le bon et recommence :-))
                    1. pour le fichier echange.pas ( c'est un programme qui échange la valeur de 2 variables c'est tout , juste une séquence ) :

                      program echange;
                      
                         var
                      
                            nombre1: INTEGER;
                            nombre2: INTEGER;
                            nombre3: INTEGER;
                      
                            nombre1 := 2;
                            nombre2 := 4;
                          writeln(nombre1,nombre2);
                      
                         begin
                      
                            nombre3 := nombre1;
                            nombre1 := nombre2;
                            nombre2 := nombre3;
                          writeln(nombre1,nombre2);
                      
                      end.
                      


                      $ cat /etc/fstab
                      /dev/sda5 / ext3 defaults 1 1
                      /dev/sda7 /home ext3 defaults 1 2
                      /dev/hdc /mnt/cdrom auto umask=0022,users,iocharset=utf8,noauto,ro,exec 0 0
                      /dev/sda1 /mnt/windows ntfs umask=0022,nls=utf8,ro 0 0
                      none /proc proc defaults 0 0
                      /dev/sda6 swap swap defaults 0 0
                      
                      1. je pense pas personnelement que le problème viennent des fichiers .pas , car les codes sont justes :

                        kate
                        QObject::disconnect: Unexpected null parameter
                        [chocho@lns-bzn-53-82-65-53-189 Documents]$ fpc test.pas && ./test
                        bash: /usr/local/bin/fpc: cannot execute binary file
                        [chocho@lns-bzn-53-82-65-53-189 Documents]$ fpc test.pas
                        bash: /usr/local/bin/fpc: cannot execute binary file


                        j'ai fait exactement ce que tu m'as dit .
                        1. Modérateur
                          ou donne le fichier echange.pas pour tester chez moi
                          affiche aussi
                           file echange.pas
                          1. Modérateur
                            whereis fpc
                            fpc: /etc/fpc.cfg /usr/local/bin/fpc
                            ok donc tu as ce que tu veux, je parle de fpc

                            maintenant il y a un problème avec echange.pas

                            essaie avec ce fichier
                            program Test;
                            begin
                              Writeln('Bienvenue dans GNU Pascal !');
                              end.
                            
                            enregistre sous Documents avec le nom de test.pas et tape
                            fpc test.pass && ./test
                            1. [chocho@lns-bzn-53-82-65-53-189 ~]$ pwd
                              /home/chocho
                              [chocho@lns-bzn-53-82-65-53-189 ~]$ su -c "ln -svf /home/chocho/tmp/y/bin/fpc /usr/local/bin"
                              Mot de passe:
                              création du lien symbolique `/usr/local/bin/fpc' vers `/home/chocho/tmp/y/bin/fpc'
                              [chocho@lns-bzn-53-82-65-53-189 ~]$ whereis fpc
                              fpc: /etc/fpc.cfg /usr/local/bin/fpc
                              [chocho@lns-bzn-53-82-65-53-189 ~]$ ls
                              Desktop/    Firefox_wallpaper.png  Musique/         tmp/
                              Documents/  Images/                Téléchargement/  Vidéo/
                              [chocho@lns-bzn-53-82-65-53-189 ~]$ cd Documents
                              [chocho@lns-bzn-53-82-65-53-189 Documents]$ ls
                              Commandes.odt  echange.pas
                              [chocho@lns-bzn-53-82-65-53-189 Documents]$ fpc echange.pas
                              bash: /usr/local/bin/fpc: cannot execute binary file
                              
                              1. Modérateur
                                quand tu est ici
                                [celia@lns-bzn-53-82-65-53-189 ~]$

                                tape
                                su -c "ln -svf /home/chocho/tmp/y/bin/fpc /usr/local/bin"

                                il y a un espace entre fpc et /usr/local/bin, et tout est sur une seule ligne
                                1. # su -c "ln -s /home/chocho/tmp/y/bin/fpc/usr/lo                                                           cal/bin"
                                  ln: création d'un lien symbolique `./bin' vers `/home/chocho/tmp/y/bin/fpc/usr/l                                                           ocal/bin': Le fichier existe.
                                  [root@lns-bzn-53-82-65-53-189 /]# whereis fpc
                                  fpc: /etc/fpc.cfg
                                  
                                  1. Modérateur
                                    Tape cette commande
                                    su -c "ln -s /home/chocho/tmp/y/bin/fpc /usr/local/bin"
                                    ensuite
                                    affiche le résultat de la commande
                                    whereis fpc
                                    si tu vois fpc: /usr/local/bin/fpc alors c'est olk
                                    Maintenant tu peux aller dans /home/chocho/documents et taper
                                     fpc fichier.pas

                                    1. echo $PATH
                                      /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/lib/qt3//bin
                                      
                                      1. Modérateur
                                        Ok je vais te montrer comment il faut faire mais d'abord
                                        Affiche le résultat de la commande
                                        echo $PATH
                                        • 1
                                        • 2
                                        • 3