码迷,mamicode.com
首页 > 其他好文 > 详细

编译——so与符号

时间:2017-10-12 17:00:20      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:--   .net   glob   oca   根据   bsp   tin   abi   sdn   

如果你是一个sdk的开发者,那么so与符号的问题一定要清楚。

关于符号的基本知识:
http://blog.csdn.net/wuzoujing/article/details/56674000

每个so都有自己的符号,所谓的函数和结构体变量之类的,其实本质上都是地址,如果一个so依赖了另外一个so,那么自己的符号信息也会写入另外一个so暴露的符号,编译时候会根据自己的符号信息去自己和依赖的so中寻找对应的符号。那么如果是一个so A自己依赖一个标准的c++库,然后被so B依赖,link时候建立了符号间的依赖,如果so A在一个另外一个编译链下依赖了另外一种c++库,这时候重新link a 和b时候,就会因为c++标准库符号的不同,可能发生一些符号找不到的问题,这是非常悲剧的。例如:

 cannot locate symbol "_ZTIN10__cxxabiv115__forced_unwindE" referenced by "/system/lib64/libMegviiUnlock.so"

控制so库向外界暴露符号的手段是,使用ld的--version-script参数设置文件,在文件中的global参数中限制自己对外暴露的符号,这些暴露的符号一定要包含自己希望暴露给外部的接口,否则外界就无法访问到对应的地址了

编译——so与符号

标签:--   .net   glob   oca   根据   bsp   tin   abi   sdn   

原文地址:http://www.cnblogs.com/gangmiangongjue/p/7656601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!