Введение в общие библиотеки (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");