On Linux, linking shared libraries with GCC involves the following steps:
1. Compile Source Code to Generate Object Files
First, compile your source code into object files. Assume your source code file is example.c; you can use the following command:
bashgcc -c example.c -o example.o
Here, -c specifies generating only the object file without linking.
2. Create a Shared Library
If you are creating a new shared library, use the -shared option to generate it. For example, to create a shared library named libexample.so from object files such as example.o, use:
bashgcc -shared -o libexample.so example.o
3. Link Against the Shared Library
To link against the shared library, assume you are linking to the previously created libexample.so. Use the -l option to specify the library name (without the lib prefix and .so suffix), and -L to specify the library path (if the library is not in the standard library path):
bashgcc -o example example.o -L. -lexample
Here, -L. indicates searching for the library in the current directory, and -lexample links to the library named libexample.so.
4. Runtime Library Path
When running the program, the operating system needs to know where the shared library is located. You can specify additional library search paths by setting the environment variable LD_LIBRARY_PATH:
bashexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/library
Alternatively, you can specify the runtime library search path during compilation using the -rpath option:
bashgcc -o example example.o -L. -lexample -Wl,-rpath,/path/to/your/library
Example Explanation
Assume a simple C program example.c that calls a function from libexample.so. First, compile example.c and create libexample.so, then link against this library, and ensure the library is visible when running the program.
These steps demonstrate how to compile source code, link shared libraries, and configure the runtime environment. This process ensures that the program can correctly locate and use shared libraries.