2009-12-22 13 views
1

J'ai créé un exécutable autonome qui fait référence à mon objet .so. sont tous les deux dans le même répertoire. lorsque je tente de lancer l'exécutable, il me donne l'erreur suivante:Échec de l'ouverture: aucun fichier ou répertoire de ce type

ld.so.1: myExec: fatal: libMine.so: open failed: No such file or directory

ce que je fais mal?

+2

'export LD_LIBRARY_PATH = $ PWD: LD_LIBRARY_PATH' $ –

+1

en double de http://stackoverflow.com/questions/1785617/shared-library-path-as-executable-directory –

+0

Je suis d'accord, Roger, que la réponse à SO 1785617 fournit la réponse à cela, mais il n'est certainement pas évident qu'ils sont de simples doublons. –

Répondre

3

systèmes Unix ne regardent pas dans le répertoire courant pour .so fichiers automatiquement.

Vous pouvez contourner ce problème pour le développement en définissant LD_LIBRARY_PATH, mais lors de l'installation normale, ils doivent être installés à l'emplacement approprié sur le système.

Voir aussi why you shouldn't make your users use LD_LIBRARY_PATH

0

Oui, comme le dit Alok, le chemin de chargement lib n'a pas le répertoire dans lequel le fichier .so est contenu. Même le répertoire de travail actuel n'est pas supposé; il doit être explicitement listé dans LD_LIBRARY_PATH.

0

Essayez d'exécuter la ligne suivante avant d'exécuter votre application:

export LD_LIBRARY_PATH=. 
+1

Cela clobbers toute valeur préexistante - vous pourriez être mieux avec: 'exporter LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:. '(Qui étend le chemin, et met le répertoire courant à la fin qui est, peut-être, un peu plus sécurisé). –