cat > loader.c << 'EOF'
#include <dlfcn.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
int main() {
DIR *d;
struct dirent *e;
char path[512];
d = opendir(".");
if (!d) {
printf("Не могу открыть директорию\n");
return 1;
}
while ((e = readdir(d)) != NULL) {
if (strstr(e->d_name, ".so")) {
printf("\nФайл: %s\n", e->d_name);
snprintf(path, sizeof(path), "./%s", e->d_name);
void *h = dlopen(path, RTLD_LAZY);
if (!h) {
printf(" Ошибка: %s\n", dlerror());
continue;
}
dlerror();
void (*info)(void) = dlsym(h, "info");
char *err = dlerror();
if (err) {
printf(" info() не найдена\n");
} else {
printf(" info(): ");
info();
}
dlclose(h);
}
}
closedir(d);
return 0;
}
EOF