How to solve openssl error when loading shared libraries libssl.so.1.1
1. The purpose of this post
After install openssl, we run the openssl version to verity the installation, but sometimes we would get this error:
2. Environments
The linux system is:
3. Debug
We try to find the file named libssl.so.1.1 as follows:
We can find that the ‘libcrypto.so.1.1’ is located in the /usr/local/lib64, But openssl try to find the .so libraries in the LD_LIBRARY_PATH
So the solution is try to tell openssl where the library is.
4. Solve it
There are two methods to solve the problem:
4.1 Method 1: Change the LD_LIBRARY_PATH
export LD_LIBRARY_PATH = /usr/local/lib64:$LD_LIBRARY_PATH
4.2 Method 2: Create a linke to the file
5. The LD_LIBRARY_PATH
As the linux documents shown:
You can temporarily substitute a different library for this particular execution. In Linux, the environment variable LD_LIBRARY_PATH is a colon-separated set of directories where libraries should be searched for first, before the standard set of directories; this is useful when debugging a new library or using a nonstandard library for special purposes. The environment variable LD_PRELOAD lists shared libraries with functions that override the standard set, just as /etc/ld.so.preload does. These are implemented by the loader /lib/ld-linux.so. I should note that, while LD_LIBRARY_PATH works on many Unix-like systems, it doesn’t work on all; for example, this functionality is available on HP-UX but as the environment variable SHLIB_PATH, and on AIX this functionality is through the variable LIBPATH (with the same syntax, a colon-separated list).
LD_LIBRARY_PATH is handy for development and testing, but shouldn’t be modified by an installation process for normal use by normal users; see ``Why LD_LIBRARY_PATH is Bad’’ at http://www.visi.com/~barr/ldpath.html for an explanation of why. But it’s still useful for development or testing, and for working around problems that can’t be worked around otherwise. If you don’t want to set the LD_LIBRARY_PATH environment variable, on Linux you can even invoke the program loader directly and pass it arguments. For example, the following will use the given PATH instead of the content of the environment variable LD_LIBRARY_PATH, and run the given executable: /lib/ld-linux.so.2 –library-path PATH EXECUTABLE Just executing ld-linux.so without arguments will give you more help on using this, but again, don’t use this for normal use - these are all intended for debugging.
You can find the full linux shared libary documents on Linux documents