Compilation Perl

thibaut31 Messages postés 28 Statut Membre -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai un programme Perl qui a ete compile sous une ancienne version de linux. Comme le labo a change de version, le programme ne fonctionne plus.
Comment faire pour recompiler ce programme sous la nouvelle version?

Merci pour votre aide
Thibaut
Configuration: Linux
Konqueror 3.3

7 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut Thibaut31,

    Perl est un langage interprété.

    Pour t'assurer de la nature de ton "exécutable", à la ligne de commande tape :

    file /chemin/vers/lenomdelexecutable

    Si tu as un résultat du genre "ELF 32-bit executable", on est bien en présence d'un exécutable compilé pour Linux.

    Si tu as un résultat "perl script text executable" alors ton "exécutable" est en fait un script ASCII contenant le source Perl, et ton problème se situe ailleurs.

    Si tu as effectivement un exécutable (et non un script ASCII) encapsulant les différentes ressources nécessaires à l'exécution du programme, celui-ci a probablement été créé avec PAR Packager.

    Pour recompiler le script d'origine (dont tu devras donc disposer), tu peux utiliser la dernière version de PAR Packager dans CPAN, ici :

    https://metacpan.org/pod/release/SMUELLER/PAR-Packer-0.973/lib/pp.pm

    Dal
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut Dal,

      il y a aussi la commande
      perlcc - generate executables from Perl programs

      0
      1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Salut Lami20j,

        Je pense que nos réponses se sont croisées :)

        Il semblerait que perlcc soit jugé moins fiable pour gérer toutes les dépendances, mais à vrai dire ne n'utilise pas vraiment perlcc ou pp pour des programmes en production, parce que je n'en ai pas besoin.

        Mais c'est un truc intéressant à creuser sur la liste de tâches-à-faire-un-jour-quand-j'aurai-le-temps-et-l'envie :P


        Dal
        0
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Re,

        Je pense que nos réponses se sont croisées :)

        En effet :-)

        Il semblerait que perlcc soit jugé moins fiable pour gérer toutes les dépendances, mais à vrai dire ne n'utilise pas vraiment perlcc ou pp pour des programmes en production, parce que je n'en ai pas besoin.

        J'avoue que je n'ai jamais utilisé pp ou perlcc et je ne pense pas non plus que je vais le faire, enfin on ne sait jamais :-))

        Bonne soirée.
        0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    il s'agit d'un script ou d'un fichier exécutable
    afffiche le résultat de la commande
    file /chemin/vers/ton/script
    Affiche aussi le résultat de la commande
    perl -e 'printf "%vd\n",$^V'
    Si la commande file t'affiche quelque chose de genre
    lami20j@debian:~/bin/my_perl_script$ file xls_create.pl
    xls_create.pl: perl script text
    alors il faut voir ton code pour depister les erreurs

    tu peux exécuter la commande perl -c /chemin/vers/ton/script pour voir les erreurs
    0
  3. thibaut31 Messages postés 28 Statut Membre
     
    La commande file me donne :

    perl script  text executable
    


    En fait, mon probleme est que ce programme fait appel a des sous programmes (avec la fonction system()) et que l'un d'eux ne fonctionne plus sous la nouvelle version de linux.
    J'ai le message d'erreur suivant :

    /home/bic/anthonin/PET_realignment/bin/bkproj_3D_lln: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory
    


    Ce programme n'est pas modifiable ni meme consultable...
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Il faut installer cette librairie libstdc++-libc6.2-2.so.3

    Tu as quoi comme distribution?
    0
    1. thibaut31 Messages postés 28 Statut Membre
       
      Euh je sais pas trop : je suis sous linux/debian...
      0
    2. thibaut31 Messages postés 28 Statut Membre
       
      Et impossible de me connecter en root...
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > thibaut31 Messages postés 28 Statut Membre
         
        alors il faut demander à l'admin d'installer cette librairie
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    en root
    apt-get install libstdc++2.10-glibc2.2

    0
  7. thibaut31 Messages postés 28 Statut Membre
     
    L'admin veut rien savoir d'apres lui cette librairie est deja installee, et il me dit de compiler le programme avec cette version de linux.
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      dit à ton admin (j'espère que ce n'est pas ta belle mère :-DDD ) que pour compiler le programme tu as besoin des sources.

      affiche le résultat de la commande
      ls -1 /usr/lib/libstdc*
      

      0
  8. thibaut31 Messages postés 28 Statut Membre
     
    Voila ce qu'il me met :

    /usr/lib/libstdc++.so.5
    /usr/lib/libstdc++.so.5.0.7
    /usr/lib/libstdc++.so.6
    /usr/lib/libstdc++.so.6.0.3
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      alors dit à ton admin que libstdc++-libc6.2-2.so.3 n'est pas installé

      voilà chez moi
      lami20j@debian:~$ ls -1 /usr/lib/libstdc*
      /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
      /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so
      /usr/lib/libstdc++-libc6.1-1.so.2
      /usr/lib/libstdc++-libc6.2-2.so.3
      /usr/lib/libstdc++.so.5
      /usr/lib/libstdc++.so.5.0.7
      /usr/lib/libstdc++.so.6
      /usr/lib/libstdc++.so.6.0.8

      0
    2. thibaut31 Messages postés 28 Statut Membre
       
      C'est la preuve...ca lui prendrait 5 min en plus. Mais bon c'est pas moi le chef.
      0
    3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > thibaut31 Messages postés 28 Statut Membre
       
      tu peux dire à ton chef, qu'il peut visiter CCM de temps en temps, tout simplement pour une ouverture d'esprit :-))
      0
    4. thibaut31 Messages postés 28 Statut Membre > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      Je viens de lui envoyer un mail...On verra la suite.
      Un grand merci pour ton aide.
      0
    5. thibaut31 Messages postés 28 Statut Membre > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      Lorsque j'essaye d'executer juste le programme qui m'embete, j'ai:
      .../PET_realignment/bin/bkproj_3D_lln: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared obje ct file: No such file or directory 
      

      Ne puis je pas dans la ligne ou j'appelle le programme specifier un emplacement de librairie qu'il utiliserait temporairement?
      0