Autotools - 选择要链接的库版本

时间:2010-08-08 13:48:27

标签: c autotools

我有一个链接到libssl.so的项目,我在libssl中遇到了一个错误,从来没有版本的lib修复它。但是在我正在工作的系统上我没有root帐户,所以我自己在$HOME/opt下构建了libssl和先决条件。

现在,当我在做的时候:

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

构建系统仍然使用旧的系统范围的libssl。

我正试图找到“黑客”自动工具与我编译过的libs链接的正确方法。

3 个答案:

答案 0 :(得分:3)

我不确定,但也许您还应该添加PKG_CONFIG_PATH的新路径。也就是说,如果您的项目使用PKG_CHECK_MODULES来查找libssl。

答案 1 :(得分:2)

总是./configure LDFLAGS=-L$HOME/opt/lib CPPFLAGS=-I$HOME/opt/include。但是该方法全局使用来自该前缀的头部和针对位于那里的lib的全局链接。 许多项目提供AC_ARG_WITH以允许自定义路径,例如

AC_ARG_WITH([ssl], ...)

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

类似于autoconf的--x-includes--x-libraries

但我想这是个人品味的问题。

刚刚注意到您不想更改文件,在这种情况下,您可以将相关库添加到LIBS变量中,或使用rpath:

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

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

答案 2 :(得分:0)

似乎:

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

迫使自动工具首先尝试$HOME/opt/lib 。如果有人知道更好或更一般的答案,我仍然都是耳朵。