I have a shared library loaded using dlopen
(with the flags RTLD_NOW | RTLD_GLOBAL
).
If this library is using functions from the main program, then it does not unload. So I end up with the same code for this shared lib, even if I unloaded (using dlclose
), changed, compiled, (re)load it.
My goal is actually to reload the same library after making changes to it, so that I do not have to relaunch the whole program to test out my code.
I am using g++ 4.2.3, on Linux Ubuntu 10.04.
(edit)
solved:
"loaded library uses a symbol due to the RTLD_GLOBAL". Indeed, I had symbols of another .a embedded when linking that were probably called back and preventing my library to close... I think it's possible to verify that a lib unloaded using dlopen(...,RTLD_NOLOAD) to check out the library has unloaded correctly.
ldd your_executable
list the library? – Rosyrot