J'ai un exécutable lié comme ceci:
$ ldd a.out
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Où les bibliothèques libcrypto et libssl se trouvent dans les bibliothèques openssl 1.0.0-fips. Je veux plutôt expérimenter avec les bibliothèques 1.0.1, et je les ai donc construites dans mon répertoire personnel. Existe-t-il un moyen de se a.out
relier à mes nouvelles bibliothèques openssl sans trop de peine? Je voudrais éviter
- Relier
a.out
(car les outils de construction sont extrêmement compliqués) - Modification de tous les paramètres globaux (car d'autres développeurs fonctionnent sur cette machine)
Est-il possible de faire ce que j'espère ici?
Écrivez un script wrapper qui définit la
LD_LIBRARY_PATH
variable d'environnement. C'est le pendant desPATH
bibliothèques partagées. Le chemin de recherche du système est toujours recherché après les répertoires répertoriés dans$LD_LIBRARY_PATH
. Voir le manuel de l'éditeur de liens dynamiques pour référence.Ou, pour une seule fois, directement sur la ligne de commande:
Alternativement, si vous souhaitez modifier le binaire, essayez chrpath , qui vous permet de modifier le chemin de recherche de bibliothèque cuit dans l'exécutable.
la source
chrpath
. Exactement ce dont j'avais besoin.