dlclose - Linux


The dlclose() function in Linux dynamically unloads a shared library that was previously loaded with dlopen(). It closes the handle associated with the shared library, freeing system resources and making the library’s functions and data unavailable.


void dlclose(void *handle);




Simple Usage:

#include <dlfcn.h>

void *handle = dlopen("my_library.so", RTLD_LAZY);
if (handle != NULL) {
  // Access library functions and data here

Using the RTLD_NOW flag:

void *handle = dlopen("my_library.so", RTLD_NOW);
if (handle != NULL) {
  // Library functions and data are loaded immediately
  // ...

Common Issues

  • Failed to load library: Ensure that the library exists, is in the correct path, and has the proper permissions.
  • Double-free error: Avoid calling dlclose() multiple times for the same handle.


dlclose() is often used in conjunction with dlopen() for dynamic loading of shared libraries. It can be used to unload libraries that are no longer needed or when the program needs to reload the library with updated functionality.

Related Commands

  • dlopen(): Load a shared library dynamically.
  • dlsym(): Get the address of a function in a shared library.
  • dlopen man page: https://man7.org/linux/man-pages/man3/dlopen.3.html