https://gcc.gnu.org/faq.html
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html
https://www.jianshu.com/p/505a32ccdc91