如何在 openssl 的配置脚本中设置 --rpath
How to set --rpath in configure script for openssl
我的系统上有不同的 openssl
版本,我不想将最新的 openssl
版本安装到系统位置 - e.q。 /usr/bin/openssl
.
现在,当我编译 openssl
然后我得到这个 运行 ldd
:
root => ldd /FaF/openssl/bin/openssl
linux-vdso.so.1 (0x00007ffe60d92000)
--> libssl.so.1.1 => not found
--> libcrypto.so.1.1 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007facf337b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007facf315e000)
libc.so.6 => /lib64/libc.so.6 (0x00007facf2dbd000)
/lib64/ld-linux-x86-64.so.2 (0x00007facf357f000)
我指的是 libssl.so.1.1
和 libcrypto.so.1.1
没有找到,到目前为止还可以。
运行 ldd
前面有 LD_LIBRARY_PATH
作品:
root => LD_LIBRARY_PATH=/FaF/openssl/lib/ ldd /FaF/openssl/bin/openssl
linux-vdso.so.1 (0x00007fff221a1000)
libssl.so.1.1 => /FaF/openssl/lib/libssl.so.1.1 (0x00007f45f842a000)
libcrypto.so.1.1 => /FaF/openssl/lib/libcrypto.so.1.1 (0x00007f45f7f9a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f45f7d96000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f45f7b79000)
libc.so.6 => /lib64/libc.so.6 (0x00007f45f77d8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f45f869b000)
/FaF/openssl/lib
是正确库所在的目录。
我现在有这些可能的解决方案:
- 将
/FaF/openssl/lib
添加到 /etc/ld.so.conf
和 运行 ldconfig
- 这不是一个真正的选项,因为它可能会破坏 openssl
的系统版本。
- 就像我在上面的例子中所做的那样,我可以在每次需要
openssl
之前加上 LD_LIBRARY_PATH=/FaF/openssl/lib/
- 这不是一个很好的选择,而且并不总是可行。
- 我可以link把
--rpath=/FaF/openssl/lib
的路径改成openssl
.
我的问题:
目前我没有弄清楚如何在生成 openssl
的 configure
命令中设置 --rpath=/FaF/openssl/lib
。有人可以向我提供此信息吗?
我尝试设置 LD_LIBRARY_PATH
和 LDFLAGS
但没有任何效果。
我更喜欢硬编码到openssl
的解决方案,因此不需要其他设置。
好的。这是 - 非常简单 - 如何根据我的问题 3) 解决它的方法。
I 运行 ./config -h
得到了这个输出:
root => ./config -h
Usage: config [options]
-d Build with debugging when possible.
-t Test mode, do not run the Configure perl script.
-v Verbose mode, show the exact Configure call that is being made.
-h This help.
Any other text will be passed to the Configure perl script.
See INSTALL for instructions.
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
文字 Any other text will be passed to the Configure perl script.
说明了一切。
我刚刚在 config
命令末尾添加了 --rpath
,现在看起来像这样:
./config --prefix=/FaF/openssl threads shared -Wl,--rpath=/FaF/openssl/lib
我的系统上有不同的 openssl
版本,我不想将最新的 openssl
版本安装到系统位置 - e.q。 /usr/bin/openssl
.
现在,当我编译 openssl
然后我得到这个 运行 ldd
:
root => ldd /FaF/openssl/bin/openssl
linux-vdso.so.1 (0x00007ffe60d92000)
--> libssl.so.1.1 => not found
--> libcrypto.so.1.1 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007facf337b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007facf315e000)
libc.so.6 => /lib64/libc.so.6 (0x00007facf2dbd000)
/lib64/ld-linux-x86-64.so.2 (0x00007facf357f000)
我指的是 libssl.so.1.1
和 libcrypto.so.1.1
没有找到,到目前为止还可以。
运行 ldd
前面有 LD_LIBRARY_PATH
作品:
root => LD_LIBRARY_PATH=/FaF/openssl/lib/ ldd /FaF/openssl/bin/openssl
linux-vdso.so.1 (0x00007fff221a1000)
libssl.so.1.1 => /FaF/openssl/lib/libssl.so.1.1 (0x00007f45f842a000)
libcrypto.so.1.1 => /FaF/openssl/lib/libcrypto.so.1.1 (0x00007f45f7f9a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f45f7d96000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f45f7b79000)
libc.so.6 => /lib64/libc.so.6 (0x00007f45f77d8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f45f869b000)
/FaF/openssl/lib
是正确库所在的目录。
我现在有这些可能的解决方案:
- 将
/FaF/openssl/lib
添加到/etc/ld.so.conf
和 运行ldconfig
- 这不是一个真正的选项,因为它可能会破坏openssl
的系统版本。 - 就像我在上面的例子中所做的那样,我可以在每次需要
openssl
之前加上LD_LIBRARY_PATH=/FaF/openssl/lib/
- 这不是一个很好的选择,而且并不总是可行。 - 我可以link把
--rpath=/FaF/openssl/lib
的路径改成openssl
.
我的问题:
目前我没有弄清楚如何在生成 openssl
的 configure
命令中设置 --rpath=/FaF/openssl/lib
。有人可以向我提供此信息吗?
我尝试设置 LD_LIBRARY_PATH
和 LDFLAGS
但没有任何效果。
我更喜欢硬编码到openssl
的解决方案,因此不需要其他设置。
好的。这是 - 非常简单 - 如何根据我的问题 3) 解决它的方法。
I 运行 ./config -h
得到了这个输出:
root => ./config -h
Usage: config [options]
-d Build with debugging when possible.
-t Test mode, do not run the Configure perl script.
-v Verbose mode, show the exact Configure call that is being made.
-h This help.
Any other text will be passed to the Configure perl script.
See INSTALL for instructions.
Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
文字 Any other text will be passed to the Configure perl script.
说明了一切。
我刚刚在 config
命令末尾添加了 --rpath
,现在看起来像这样:
./config --prefix=/FaF/openssl threads shared -Wl,--rpath=/FaF/openssl/lib