记录
Shared Library
* 编译,链接,静态库与动态库 * 预备知识 * 编译: * Relocation * 静态链接 * 动态链接 * 细节问题 * 动态链接器如何确定可执行文件的所有依赖? * 文件定位的规则 * 动态relocation细节 * dlopen * fPIC * 控制DSO的dynsym符号导出 * Versioning (Version script) * Interpose * Good Practice 正确而高效的使用动态库是一个很复杂的话题,这需要开发者编译和链接有相当深入的理解. 本文主要关注"正确使用",这已经足够复杂. 这里主要是描述linux/gnu体系下编译器/链接器的行为(可能不适合其他系统,甚至不适合老版本的linux工具链), 这些行为的设计一般都有历史因素及兼容性的考量,所以某些部分可能看起来不够优美. 编译,链接,静态库与动态库 预备知识 编译: * 将单个编译