Libs dynamique a l'execution

Bonjour a tous 8) !
Voila je compile un projet utilisant le moteur 3D Ogre et mon problème se situe au niveau des libs dynamiques. La compilation passe sans problème mais lors de l’éxécution le programme ne trouve pas la lib de Ogre qui se situe dans le même répertoire que l’éxecutable. Je voudrais savoir comment dire a l’éxecutable où se trouve la lib au moment du runtime.

Cordialement

Gouwi

Ce n’est pas normal que ta lib soit dans le répertoire de compil.
Il y a un paquet libogre-dev pour avoir les bonnes libs debian pour la compil (à utiliser plutot qu’une version générique non testée avec ta distrib), et son pendant runtime, c’est libogremain-1.6.4
Peut être qu’il suffit d’installer libogremain-1.6.4 pour executer ton boulot, mais moi je recompilerais plutot en installant le paquet -dev et en compilant en -logre

J’utilise une version personnelle de Ogre 1.7.2, ce que j’ai fait pour que cela fonctionne j’ai crée un script qui définie la variable d’environnement :

export LD_LIBRARY_PATH=. ./Test

Et cela marche. Mais le problème c’est que pour changer les paramètres a l’éxécution je sais pas comment faire, mais il n’y a pas un moyen pour lui spécifier à la compilation ?

Le seul moyen serait de compiler en statique, mais ça voudrait dire que la lib serait embarquée dans l’executable (qui deviendrait portable mais énorme).
2 alternatives:

  • dropper ta lib dans un endroit du LD_LIBRARY_PATH par defaut,
  • faire en sorte que ton executable ne soit appelé qu’au travers de ton script avec reconfiguration du LD_LIBRARY_PATH

Ouai j’ai fait ainsi, j’ai gardé mon script et pis voila !

Mais je pensais qu’avec ld on pouvait définir un paramètre pour lui spécifier l’emplacement des libs a l’éxécution.

Cordialement

Gouwi

Tu sembles avoir raion:

quote=“man ld”
-rpath=dir
Add a directory to the runtime library search path. This is used when linking an ELF executable with shared objects. All
-rpath arguments are concatenated and passed to the runtime linker, which uses them to locate shared objects at runtime. The
-rpath option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see
the description of the -rpath-link option. If -rpath is not used when linking an ELF executable, the contents of the
environment variable “LD_RUN_PATH” will be used if it is defined.

       The -rpath option may also be used on SunOS.  By default, on SunOS, the linker will form a runtime search patch out of all the
       -L options it is given.  If a -rpath option is used, the runtime search path will be formed exclusively using the -rpath
       options, ignoring the -L options.  This can be useful when using gcc, which adds many -L options which may be on NFS mounted
       file systems.

       For compatibility with other ELF linkers, if the -R option is followed by a directory name, rather than a file name, it is
       treated as the -rpath option.

(…)[/quote]