Error : loading shared libraries: cannot open shared object file: No such file or directory
1. Problem Description:
The program s
needs the support of Library L1
and Library L2
to run Library L1/L2
after installation, when executing software s, Library L2 shared object
cannot be loaded, prompting that the file or path does not exist
**2. Solution:**
When the library is dynamic library
, you need to indicate the path of the dynamic library for the operating system when running the program s
.
2.1 determine the path of Library
:
$ sudo find/-name library_name.so
2.2 determine whether the dynamic library path exists in the environment variable (ld_library_path)
$ echo $LD_LIBRARY_PATH
2.3 assign the dynamic library path to the environment variable (ld_library_path)
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/the/lib
$ export LD_LIBRARY_PATH
You can run the program.
expand:
**1. Library files in linux
System: * *
library is a collection of precompiled code segments called functions. Libraries contain common functions that together form a package called a library. Functions are blocks of code that are reused throughout the program. Calling these code fragments repeatedly in the program can save time. You can avoid rewriting code multiple times. For programmers, libraries provide reusable functions, data structures, classes, and so on.
Libraries are not executable, which is the key difference between processes and applications. Libraries work at run time or compile time. In C programming language, there are two types of Libraries: dynamic library and static library.
**Dynamic and static libraries: * *
dynamic or shared libraries
appear as independent files other than executable program files. Therefore, the program only needs one copy of the dynamic/shared library file at run time. The static libraries are locked in the program.
**2. linux
system environment variables: * *
environment variables and shell
variables:
Environment variables are managed by the shell
. The difference between environment variables and regular shell
variables is that shell
variables are local variables of specific instances of shell
, such as shell scripts, while environment variables are “inherited” by any program you start, including another shell
. In other words, the new process obtains copies of its own variables. It can read and modify these variables and pass them to its child processes in turn. In fact, every UNIX
process (not just shell
) passes its environment variables to its child processes.
Environment variables are globally available in programs and their subroutines. Shell variables are only available in the current shell. Environment variables like $shell
are valid system wide. In the current bash shell
, $bash
points to the execution path of bash
, while $shell
points to the shell
(its value may be the same) defined as Default
.
#Define the shell variable VAR and its value
[biocodee@localhost ~]$ VAR="This is a variable"
[biocodee@localhost ~]$ echo $VAR
This is a variable
# See if the shell variable exists in the environment variable env
[biocodee@localhost ~]$ env | grep VAR
# Convert a shell variable to an environment variable
[biocodee@localhost ~]$ export VAR
[biocodee@localhost ~]$ env | grep VAR
VAR=This is a variable