本文摘自PHP中文网,作者零下一度,侵删。
这篇文章主要介绍了 linux 下同名符号冲突问题解决方案的相关资料,需要的朋友可以参考下linux 下同名符号冲突问题解决方案
最近的工作中遇到如下令人蛋疼的问题:
Linux 下有三个模块aa、bb、cc,基本情况如下:
cc 编译连接得到 cc.so 动态库,cc 中有如下接口:
1 2 3 4 5 6 |
|
bb 编译连接得到 bb.a 静态库,bb 中有如下接口:
1 2 3 4 5 6 7 8 9 |
|
aa 编译后通过 -lbb 链接选项的方式连接 bb.a 得到 aa 可执行程序,并调用 bb.a 的接口函数 bb_fun():
1 2 3 4 5 6 |
|
工作中发现 aa 在运行时行为异常,总是有内存泄露和功能异常,通过定位发现问题集中在同名的 do() 函数上。通过输出打印发现程序中两次调用 do() 函数都调用到了 bb 模块中的 do() 函数,而 cc 模块中的 do() 函数从未被调用到,导致程序行为异常和内存泄露。
相关阅读 >>
如何理解迁云工具和 p2v(physical to virtual)
更多相关阅读请进入《Linux》频道 >>