Mon PATH n'est pas respecté ! Ca ne va path !

Philippe -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour
mon PATH donne l'accès à /usr/lib64 qui contient la librairie crt1.o
Or si je fais: whereis crt1.o il ne me la trouve pas, pourquoi !!!

Détails:
PATH=.:/usr/local:/usr/bin/X11:/etc:/usr/etc:/usr/ucb:/usr/ccs/bin:/lib:/usr/bin:/bin:/usr/lib:/usr/lib64:/home/local: ...

home> ls /usr/lib64/crt1.o
/usr/lib64/crt1.o
home> whereis crt1.o
crt1:

merci de votre aide !

4 réponses

  1. laurent
     
    Bonjour,

    tout simplement parce que la commande whereis ne fait des recherche que dans les repertoires par defaut de linux et n'utilise pas la variable $PATH.

    tape "man whereis" pour verifier

    Tu devra te faire un petit script shell personnalisé à base de find pour obtenir une recherche particuliere. Tu pourra te créer un répertoire bin dans ton $HOME et l'ajouter a ton .bashrc perso par exemple, si bash est ton shell par defaut, ou a /etc/profile si tu es un faineant...

    @+
    0
  2. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    crt1.o n'est pas un éxetutable, mais un fichier objet utlisé par ld qui va
    permettre le lancement d'un processus et appeler la fonction main. Il s'agit
    d'un fichier objet qui ne peut être que lié statiquement dans le fichier exécutable.
    Ca sert donc à rien de jouer avec PATH pour le trouver.
    A+, crabs
    0
    1. Philippe
       
      Merci tous, Merci crabs

      c'est vrai que which ne me dit rien sur mon crt1.o
      En fait, mon vrai pb est que lors d'une édition de lien (ld) le crt1.o n'est pas trouvé ! Il le cherche dans /usr/lib alors qu'il est bien dans /usr/lib64 qui lui est déclaré dans mon PATH et mon LD_LIBRARY_PATH

      Alors comment faire !!! Pourquoi ne le trouve-t-il pas !

      Voici le résultat de la compil:
      make
      ifort -o iapetus compo.o iniout.o endout.o corps.o thermo.o reduction.o chgbase.o triage.o output.o dataread.o iniden.o verbase.o inibase.o filtre.o conduc.o sortie.o newton.o lissage.o evaluation.o inverseD.o systeme.o fctpar.o produit.o
      ld: cannot open /usr/lib/crt1.o: No such file or directory

      ls /usr/lib64/crt*
      /usr/lib64/crt1.o /usr/lib64/crti.o /usr/lib64/crtn.o

      PATH=/usr/lib64:.:/usr/local:/usr/bin/X11:/etc:/usr/etc ....
      LD_LIBRARY_PATH=/usr/lib64:/opt/intel_fc_80/lib:/opt/intel_cc_80/lib


      MErci de ton aide
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > Philippe
         
        Salut,

        Essaie un lien symbolique :
        ln -s /usr/lib64/crt1.o  /usr/lib/crt1.o
        ;-))
        0
      2. Philippe > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        merci
        ça marche mais il me demande toutes les librairies de /usr/lib64 les unes après les autres !!!
        Il doit y avoir un autre moyen
        Pourquoi ne va-t-il pas dans /usr/lib64 que je lui ai déclaré !!!
        As-tu une idée ?
        0
      3. jipicy > Philippe
         
        Re-

        Juste un truc...
        Tes variables PATH et LD_LIBRARY_PATH, tu les as définies dans le ".bashrc" (et dans certain cas le " .bash_profile"), mais les as-tu exportées ???
        export PATH  LD_LIBRARY_PATH
        ;-))
        0
      4. letricycle Messages postés 5 Statut Membre > Philippe
         
        bonsoir

        y'avais un lien avec ecrit: discussion similaire, j'ai cliqué dessus, et je vois une discussion a laquelle je ne comprend rien.
        COmme j'ai lu quand m^me (curiosité, curiosité) je vous dis bonne soiré et je vais retrouver ma boite de nurofen.

        au revoir
        0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Notons au passage que les commandes locate, slocate (combinées avec updatedb), et which servent aussi à localiser des fichiers...

    Mais à part ça crabs a parfaitement résumé le problème...
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Euh en tout cas le "." en début de PATH c'est un peu abusif. Imagine que quelqu'un crée un executable "cd" dans ton home c'est vraiment très dommage (surtout si celui-ci est malveillant :p).

    Bon sinon, comme dis précédemment, dans ton .bashrc (ou .bash_login) il faut bien définir tes variables ainsi :
    export PATH=${PATH}:/un/repertoire:/un/repertoire2

    Bonne chance
    0