2010-08-08 4 views
1

J'ai un projet qui lie à libssl.so et je tape un bogue dans libssl et jamais les versions de la bibliothèque ne le corrigent. Cependant, sur le système que je travaille, je n'ai pas de compte root, j'ai donc créé libssl et mes prérequis sous $HOME/opt.Autotools - sélection des versions de la bibliothèque à lier avec

Maintenant, quand je fais:

./configure --prefix=`$HOME/opt` 
make 

le système de construction utilise encore la version du système à l'échelle la plus ancienne de libssl. J'essaie de trouver la bonne façon de "hack" autotools pour lier avec les bibliothèques que j'ai compilées.

Répondre

2

Il y a toujours ./configure LDFLAGS=-L$HOME/opt/lib CPPFLAGS=-I$HOME/opt/include. Mais cette méthode utilise globalement les en-têtes de ce préfixe et globalement les liens avec les bibliothèques qui s'y trouvent. De nombreux projets fournissent AC_ARG_WITH s pour permettre de personnaliser les chemins, par ex.

AC_ARG_WITH([ssl], ...) 

ou

AC_ARG_WITH([ssl-prefix], ...) 
AC_ARG_WITH([ssl-libs], ...) 
AC_ARG_WITH([ssl-includes], ...) 

par analogie avec --x-includes de autoconf et --x-libraries

Mais je pense qu'il est une question de goût personnel.

juste remarqué que vous ne voulez pas changer vos fichiers, dans ce cas, vous pouvez simplement ajouter la bibliothèque en question à la variable LIBS, ou utilisez un rpath:

./configure LIBS="$HOME/opt/lib/libssl.so.x.y.z" 

ou

./configure LDFLAGS="-Wl,-rpath,$HOME/opt/lib/" 
3

Je ne suis pas sûr, mais peut-être que vous devriez également ajouter le nouveau chemin au PKG_CONFIG_PATH. C'est-à-dire, si votre projet utilise PKG_CHECK_MODULES pour trouver libssl.

+0

Je ne veux pas modifier l'un de mes fichiers source juste pour contourner mon problème spécifique. –

+1

Vous n'avez pas besoin de modifier vos fichiers source pour définir les variables d'environnement: vous pouvez exécuter ./configure PKG_CONFIG_PATH = $ HOME/opt/lib/pkgconfig. –

+0

Oh, d'accord. Maintenant je comprends. –

0

Il semble que:

LDFLAGS="-L$HOME/opt/lib" ../configure --prefix="$HOME/opt" 

est forcement autotools pour essayer $HOME/opt/libpremier. Si quelqu'un sait mieux ou une réponse plus générale, je suis toujours à l'écoute.

Questions connexes