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

Philippe -  
mamiemando Messages postés 34243 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

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
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
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
jipicy Messages postés 41342 Statut Modérateur 4 896 > Philippe
 
Salut,

Essaie un lien symbolique :
ln -s /usr/lib64/crt1.o  /usr/lib/crt1.o
;-))
0
Philippe > jipicy Messages postés 41342 Statut Modérateur
 
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
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
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
mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
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
mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
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