#include <stdio.h>#include <dlfcn.h>int bar = -20;intmain (void){int ret = 0;void *handle;void (*fcn) (void);handle = dlopen("./tmpdir/libdl1.so", RTLD_GLOBAL|RTLD_LAZY);if (!handle){printf("dlopen ./tmpdir/libdl1.so: %s\n", dlerror ());return 1;}fcn = (void (*)(void)) dlsym(handle, "foo");if (!fcn){printf("dlsym foo: %s\n", dlerror ());ret += 1;}else{(*fcn) ();}dlclose (handle);return ret;}