Comment spécifier non partagé par défaut-chemin de la bibliothèque dans GCC Linux? Obtiens le message “erreur lors du chargement des bibliothèques partagées” lors de l'exécution de

Il y a un ordinateur portable sur lequel je n'ai pas les privilèges de root.

sur la machine, j'ai une bibliothèque installé à l'aide de configure --prefix=$HOME/.usr .

après, j'ai reçu ces fichiers dans ~/.usr/lib :

libXX.so.16.0.0
libXX.so.16
libXX.so
libXX.la
libXX.a

quand je compile un programme qui appelle une fonction fournie par la bibliothèque avec cette commande :
gcc XXX.c -o xxx.out -L$HOME/.usr/lib -lXX

xxx.a été généré sans avertissement, mais quand je le lance en erreur, comme cela a été lancé:

./xxx.out: error while loading shared libraries: libXX.so.16: cannot open shared object file: No such file or directory , si libXX.so.16 y réside.

mon idée-moins l'hypothèse est que ~/.usr/lib n'était pas recherchés lors de xxx.est invoquée.
mais ce que je peux faire pour spécifier le chemin d'accès .ainsi , dans l'ordre que xxx.peut y chercher .si le fichier?

Un plus est quand je nourris -static à gcc, une autre erreur se produit comme ceci:

undefined reference to `function_proviced_by_the_very_librar'

Il semble .so n'a pas d'importance, même si -L et -l sont donnés à gcc.
que dois-je faire pour construire un utilisable exe avec cette bibliothèque?


Pour les autres personnes qui ont la même question que je n'ai

J'ai trouvé un article utile à tldp à ce sujet.

Il introduit statique/shared/dynamique chargé de la bibliothèque, ainsi que des exemples de code pour les utiliser.

InformationsquelleAutor Jokester | 2012-01-12