如何在openssl的configure脚本中设置--rpath

时间:2018-05-27 15:46:47

标签: linker openssl ld configure rpath

我的系统上有不同的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.1libcrypto.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是正确库的目录。

我现在有了这些可能的解决方案:

  1. /FaF/openssl/lib添加到/etc/ld.so.conf并运行ldconfig - 这实际上不是一个选项,因为它可能会破坏openssl的系统版本。
  2. 正如我在上面的示例中所做的那样,每次我需要openssl LD_LIBRARY_PATH=/FaF/openssl/lib/时,我都可以提前 - 这不是一个很好的选择,并不总是可行。
  3. 我可以将<{1}}的路径链接到--rpath=/FaF/openssl/lib
  4. 我的问题:
    目前我还没弄清楚如何在生成openssl的{​​{1}}命令中设置--rpath=/FaF/openssl/lib。有人可以向我提供这些信息吗?

    我尝试设置configureopenssl,但没有任何效果。

    我更喜欢将硬编码的解决方案添加到LD_LIBRARY_PATH中,因此无需其他设置。

1 个答案:

答案 0 :(得分:1)

行。以下是 - 非常简单 - 如何根据我的问题解决它。

我跑了./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.说明了一切。

我刚刚在--rpath命令的末尾添加了config,现在看起来像这样:
./config --prefix=/FaF/openssl threads shared -Wl,--rpath=/FaF/openssl/lib