我有一个链接到libssl.so的项目,我在libssl中遇到了一个错误,从来没有版本的lib修复它。但是在我正在工作的系统上我没有root帐户,所以我自己在$HOME/opt
下构建了libssl和先决条件。
现在,当我在做的时候:
./configure --prefix=`$HOME/opt`
make
构建系统仍然使用旧的系统范围的libssl。
我正试图找到“黑客”自动工具与我编译过的libs链接的正确方法。
答案 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
。如果有人知道更好或更一般的答案,我仍然都是耳朵。