I need to dynamically link a library that I have created. I'm not exactly sure what the issue is. It all compiles properly, but I always catch
handle = dlopen ("./hw11-lib-michaelSchilling.so", RTLD_LAZY);
//same error comes up with full path as well as './hw11...'
error = dlerror();
printf("Error loading library.\n");
gcc -rdynamic -c hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so
gcc hw11-michaelSchilling-4.c -ldl -o hw11-michaelSchilling-4
./hw11-lib-michaelSchilling.so: only ET_DYN and ET_EXEC can be loaded.
hw11-lib-michaelSchilling.so, you don't appear to be telling
gcc that you want a shared object (the
.so in the name isn't enough).
-c it's producing an object file (not a shared object) and calling it
michaelSchilling.so. The linker doesn't even get invoked.
-c from the
gcc command line and add
gcc -shared -rdynamic hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so