| #include <fcntl.h> |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <dlfcn.h> |
| |
| #ifdef __UCLIBC__ |
| extern void _dlinfo(void); |
| #endif |
| |
| int main(int argc, char **argv) { |
| void *handle; |
| int (*mydltest)(const char *s); |
| char *error; |
| |
| handle = dlopen ("./libtest2.so", RTLD_LAZY); |
| if (!handle) { |
| fprintf(stderr, "Could not open ./libtest2.so: %s\n", dlerror()); |
| exit(1); |
| } |
| |
| handle = dlopen ("./libtest1.so", RTLD_LAZY); |
| if (!handle) { |
| fprintf(stderr, "Could not open ./libtest1.so: %s\n", dlerror()); |
| exit(1); |
| } |
| |
| mydltest = dlsym(handle, "dltest"); |
| if ((error = dlerror()) != NULL) { |
| fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error); |
| exit(1); |
| } |
| |
| mydltest("hello world!"); |
| |
| dlclose(handle); |
| |
| return EXIT_SUCCESS; |
| } |
| |