In *nix .so libraries, is there an entry point that's invoked by the system when the library is loaded and unloaded?
On a more practical note: if the .so was written in C++ and it contains global objects with constructors and destructors, and it's loaded from a language that has no notion of construction/destruction, are the global objects properly constructed/destructed?
You can use the __attribute__((constructor))
and __attribute__((destructor))
to execute code on load and unload of the shared library.