As we have discussed above, ELF is a very flexible binary format. It provides many useful functionalities. It puts very few restrictions on programs and programmers. It eases the process of building shared library and integrates dynamic loading with the shared library via an interface library to the dynamic linker. Under ELF, global constructors and destructors in C++ can be treated in shared libraries the same way as in static libraries.