#include <dlfcn.h> #include <stdio.h> #include <stdlib.h> extern int bar (void); extern int baz (void); extern int foo (void); extern void __attribute__ ((__constructor__)) init (void); void *h; int foo (void) { return 42 + bar (); } int baz (void) { return -21; } void __attribute__ ((__constructor__)) init (void) { h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY); if (h == NULL) { puts ("failed to load constload3"); exit (1); } else puts ("succeeded loading constload3"); } static void __attribute__ ((__destructor__)) fini (void) { if (dlclose (h) != 0) { puts ("failed to unload constload3"); exit (1); } else puts ("succeeded unloading constload3"); }