POSIX имеет несколько функций, которые позволяют вам это делать, предполагая, что переменная hello
является глобальной и не является статической:
void *handle = dlopen(NULL, RTLD_NOW);
// error handling omitted
printf("%s variable contains value %s", abc, (char *)dlsym(handle, abc));
dlsym()
возвращаемое значение преобразуется в char *
для подавления предупреждения при использовании компиляторов, которые проверяют строку формата для printf
-подобных функций.
И вам нужно убедиться, что вы указали правильные параметры компилятора, например, -rdynamic -ldl
в случае GCC.