|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
Bonjour,
Voilà les hypothèses que je ne peux pas changer :
Actuellement, le .so est dans le répertoire courant à la compilation, et j'ai simplement : passé à la ligne de compilation. Et tout marche bien. Mais il ne faut plus qu'il soit dans le répertoire courant car je suis en train de séparer les fichiers intermédiaires du source. Donc mon répertoire courant est celui du Makefile, et je ne veux pas y mettre de binaires (toto.so est compilée par moi). Je ne peux pas utiliser -l car toto.so ne s'appelle pas libtoto.so. Donc je ne peux pas utiliser -L, car elle est utilisée que si -l est utilisée. Donc si toto.so ne se trouve pas dans le répertoire courant j'obtiens : Code :
gcc: toto.so: No such file or directory Et ce, même si toto.so est dans le PATH. Et si je met le chemin complet vers toto.so dans la ligne de compile : J'ai l'erreur à l'exécution : Code :
./MonApp: error while loading shared libraries: MonRep/toto.so: cannot open shared object file: No such file or directory Il me cherche la librairie avec le répertoire, comme dans ma ligne de link. ![]() Bilan, comment faire pour avoir MonRep/toto.so dans la ligne de compilation, mais que l'exécutable cherche bien toto.so dans LD_LIBRARY_PATH ? Merci d'avance de vos éclaircissements. [edit] une solution à base de ln -s ne me satisfait pas a priori : je me retrouverais avec un exécutable qui recherche libtoto.so. |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
Visblement, pourrait me sauver la mise, mais je parviens pas à m'en servir.
[edit] Comprend pas... Cette option n'est précisé nul part dans le man de gcc... [edit 2] Marche que sous windows on dirait ! [edit 3] Ou alors c'est la version de ld, 2.15 sous linux, 2.18 sous windows. [edit 4] Bon alors oui c'est un problème de version, marche pas non plus sous windows en ld 2.16. |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Hum... j'hésite à donner ma réponse. C'est tellement mal de ne pas suffixer par lib...
|
|
|
00
|
|
|
#4 | |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Hum... pas de souci avec la ligne de commande suivante.
Citation:
Testé avec Ubuntu. |
|
|
|
00
|
|
|
#5 | ||
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
Heing ? Et tu bouges ton exécutable ? Tu mets quoi comme répertoire dans LD_LIBRARY_PATH, celui où tu as linker ton exécutable (MonRep/toto.so y existe...), ou celui de la librairie ?
Voilà un essai bateau. Je compile une librairie dans libdir. Je compile un programme se liant à libdir/mylib.so. Je teste sans bouger le programme -> Ca marche. Je déplace mon programme dans prog dir. J'essaie d'ajuster LD_LIBRARY_PATH, mais cela ne fonctionne pas. Si je regarde les dépendances de mon exécutable avec ldd, je vois qu'il cherche encore et toujours avec un nom de répertoire... Code :
Merci au fait... En quoi c'est mal de ne pas préfixer ? |
||
|
|
00
|
|
|
#6 | ||
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
Yeah !
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
gcc -> -soname
hp -> +h solaris -> -h aix -> ?????? Aaaaaaaaaarh !!!
|
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Inscription : mars 2005 Messages : 860 ![]() |
Ton LD_LIBRARY_PATH doit contenir le chemin vers la librairie dynamique. Pour ne pas t'embêter, mets un chemin absolu.
Toutefois, je trouve très curieux que ton ldd mette le chemin MonRep. Pour ma part, il me met juste le nom de la librairie. Euh oui effectivement, il faut positionner le soname pour que ldd ne mette que le nom de la librairie. Pourquoi préfixer par lib ? Car c'est standard, c'est tout. Toutefois, sous Windows, on ne préfixe pas. |
|
|
00
|
|
|
#9 |
|
Membre éprouvé
![]() Développeur informatique Inscription : octobre 2005 Messages : 203 ![]() |
Bon finalement quelqu'un m'a donné la solution pour aix
Merci pour tes essais aoyou. C'est vrai que mes prédécesseurs auraient pu préfixer par lib quand même. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com