创建动态库时,建议使用的链接选项Bsymbolic
来源:互联网 发布:google play mac 编辑:程序博客网 时间:2024/06/14 19:57
题外话:最近了解了一种轻量级标记语言,叫做Markdown.可以使用Markdown易读的文本格式,然后将其转换为HTML格式。虽然才知道,发现这个语法已经在无处不在了,著名的stack overflow发帖,以及一些wiki,或者一些博客都支持这种语法编辑了。OK,那么博主,这次也尝试下,本次博客采用的是MarkDownPad编辑器编写。
问题描述
回归正题,前段时间项目开发中,实现了一个动态库,封装了一些方法。然后基于这个动态库,实现了一个应用程序。应用程序中含有全局变量A,动态库中也含有全局变量A,当我调用动态库中函数后,发现应用程序的A发生了变化!!!O,My God!对于我这种还没在Linux下做过开发的人来说,一头雾水。。。。。。 于是我尝试着,将A中的变量名称改为B,这样问题也就没有了~~~
原因
应用程序进行链接的时候,动态库中全局变量定义,将会被应用程序中同名的全局变量所覆盖。这样也就造成了,在动态库中修改A变量时,应用程序中的A也发生了变化。
解决方法
在创建动态链接库时,gcc/g++选项中添加编译选项
-Wl,-Bsymbolic.
其中Wl表示将紧跟其后的参数,传递给连接器ld。Bsymbolic表示强制采用本地的全局变量定义,这样就不会出现动态链接库的全局变量定义被应用程序/动态链接库中的同名定义给覆盖了!
10 0
- 创建动态库时,建议使用的链接选项Bsymbolic
- 创建动态库时,建议使用的链接选项Bsymbolic
- 小谈链接选项-Bsymbolic
- 动态链接库的创建及使用
- 动态链接库的创建与使用
- 动态链接库的创建与使用
- 动态链接库的使用(一):创建
- 动态链接库的创建和使用
- 动态链接库的创建和使用
- 升级动态链接库及创建一个简单的动态链接库、使用载入时动态链接、使用运行时动态链接的示例,译自MSDN
- 创建使用动态链接库
- linux 动态链接库的创建和使用--动态连接
- linux 动态链接库的创建和使用--动态连接
- 简单的动态链接库编译选项
- Linux系统中动态库的链接和链接选项
- 动态链接库的创建
- 动态链接库的创建
- 动态链接库的创建
- object-c 随机数
- Web-Service-SOAP&WSDL
- a20开发日志(2)——修改开机画面
- UIImageView响应点击事件
- 《你必须知道的495个C语言问题》笔记--杂项
- 创建动态库时,建议使用的链接选项Bsymbolic
- Opencv函数总结
- C++ 中 父类的虚 析构函数_legend
- 泛型
- Android中makfile的随记
- Navigation Bar开机后显示和隐藏(一)
- 端口号
- Web-Service-SOAP1.1 vs SOAP1.2
- VC++网页控件加载无滚动条的网页(适合加载本地网页)