gcc 4.4.3 C89 linuxapplication copie à une autre machine, ne peut pas trouver la bibliothèque partagée
J'utilise log4c et ont placé le inc et lib dans les répertoires suivants
/home/jeff/projects/gateway/tools/log4c/inc
/home/jeff/projects/gateway/tools/log4c/lib
Dans mon Makefile je a précisé le inc et le chemin lib:
INC_PATH = -I tools/log4c/inc
LIB_PATH = -L tools/log4c/lib
LIBS = -llog4c
Dans mon répertoire lib je les bibliothèques partagées suivantes:
lrwxrwxrwx 1 root root 17 2010-08-26 15:57liblog4c.so -> liblog4c.so.3.1.0
lrwxrwxrwx 1 root root 17 2010-08-26 15:57 liblog4c.so.3 -> liblog4c.so.3.1.0
-rw-r--r-- 1 root root 100180 2010-08-26 15:55 liblog4c.so.3.1.0
compiler mon application sur ma machine de développement, puis copiez le répertoire binaire et des outils pour la machine d'essai
Alors, quand j'exécute binaire sur la machine de test, je reçois l'erreur suivante:
./app: error while loading shared libraries: liblog4c.so.3: cannot open shared object file: No such file or directory
Cependant, tout fonctionne bien sur ma machine de développement qui a la même structure de répertoire, par exemple
machine dev:
/projects/gateway/app
/projects/gateway/tools/log4c/inc
/projects/gateway/tools/log4c/lib
machine de test:
/projects/gateway/app
/projects/gateway/tools/log4c/inc
/projects/gateway/tools/log4c/lib
Je me demande pourquoi il ne peut pas trouver la bibliothèque partagée.
Un grand merci pour toutes les suggestions,
Que diriez-vous à l'aide du rpath. La raison pour laquelle j'ai demandé est parce que l'utilisateur ne saura pas comment configurer le système. Je vais juste leur donner les binaires et le client veut juste exécuter l'application. Merci. – ant2009
oui, utiliser 'rpath' est aussi une option, il vous suffit de mettre le chemin valide (pour dev, test et production) de la librairie. Si c'est relatif, vous devrez exécuter le programme à partir du répertoire spécifié, où le chemin sera valide. –