Linux下全局符号覆盖问题
摘要:
在windows上,默认情况下,动态库中的符号都是对外隐藏的,除非你显示的指出要导出哪些符号,否则外界是看不到的。但是linux下情况刚好相反,对静态变量和全局变量,linux下so里面的符号对外可见。这就很容易出现一个问题,就是外界很可能会无意中修改so内部的符号或符号同名但内存结构不同,带来各种问题。有一种方法能将so里面的符号隐藏起来,避免全局符号覆盖。1、首先,编程参数中添加编译选项-fvisibility=hidden,这个是隐藏符号的控制。2、其次,在要导出的接口前添加__attribute__ ((visibility("default")))。通过以上两步, 阅读全文
posted @ 2013-10-30 22:56 新一 阅读(793) 评论(0) 推荐(0)
浙公网安备 33010602011771号