在 CentOS 中 LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 这一行起什么作用?

在 CentOS 中 LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 这一行起什么作用?

主办:Digital Ocean 上的新 Droplet

操作系统:全新安装 CentOS 7.6.1810

问题:我使用教程从源代码安装了 OpenSSL 1.1.1,但我不明白以下两行的作用。我了解 Linux 的基础知识,但我不知道如何阅读这些内容。

:~# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
:~# echo "export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64" >> ~/.bashrc

其次,当我检查版本时,它返回 1.1.1。

:~# openssl version
:~# OpenSSL 1.1.1  11 Sep 2018

然而,当我查看已安装的内容时,它仍然显示旧的 OpenSSL 1.0.2k。

:~# yum list installed | grep openssl
openssl.x86_64                          1:1.0.2k-16.el7_6.1        installed
openssl-devel.x86_64                    1:1.0.2k-16.el7_6.1        @updates
openssl-libs.x86_64                     1:1.0.2k-16.el7_6.1        installed

我的感觉是,前两行与这个问题有某种联系,但我无法理解。我讨厌在不了解发生了什么的情况下机械地做某事。

答案1

ld.so(8) 手册页解释道:

       LD_LIBRARY_PATH
              A  list  of  directories in which to search for ELF libraries at
              execution time.  The items in the list are separated  by  either
              colons  or  semicolons,  and  there  is  no support for escaping
              either separator.

              This variable is ignored in secure-execution mode.

通过在您的环境中设置此项,您运行的程序将首先在这些目录中搜索共享库。看来您的教程作者打算用您本地安装的 OpenSSL 版本覆盖系统 OpenSSL 软件包。

相关内容