Введение в общие библиотеки (shared libs)

Общие библиотеки (.so, shared object) используются множеством программ во время выполнения.

Плюсы:

  • Уменьшение размера бинарников

  • Централизованное обновление библиотек

  • Возможность замены функций через LD_PRELOAD

Примеры:

  • /lib/arm-linux-gnueabihf/libc.so.6

  • /usr/lib/libm.so

  • Пользовательская библиотека: libsensor.so

Компиляция с общей библиотекой:

gcc app.c -o app -lm

Динамическая загрузка во время выполнения:

void* handle = dlopen("libcustom.so", RTLD_LAZY);
void (*func)() = dlsym(handle, "my_function");