linux 下同名符冲突的问题及解决办法


当前第2页 返回上一页

后经多方查证了解到因为 linux 程序中各个库中的符号表最终都会加载到程序所在的全局符号表中,此时如果有同名符号就只能调用到第一个加载进来的符号,也就是说后边加载的同名符号都会被之前的覆盖。cc 模块中的 do() 函数被 bb 模块中的 do() 函数覆盖了,所以无法被调用到。

废话不多说。。。

在试验过很多不满意的方法之后,最终的解决方法如下:

1.在 cc 的 makefile 中加入 -Wl,-Bsymbolic -Wl,--version-script,version 的连接选项,意思是用 version 文件中的脚本指定其导出哪些函数。

2.version 文件的实现如下:


1

2

3

4

5

VERS{

global:

cc_fun;

local: *;

};

意思是指定 cc 模块只导出接口函数 cc_fun,其余函数都设为 local 不做导出。

将该文件保存在 makefile 所在目录即可。

3.重新编译连接三个模块,问题解决。

以上就是linux 下同名符冲突的问题及解决办法的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

Linux服务器安全提示

Linux判断是否是目录的方法

如何使用haproxy负载均衡mysql

Linux如何进入home目录

Linux+apache 跨域配置

学习Linux步骤方法

Linux一些常用的命令

Linux如何查看服务

Linux怎么打开iso文件

如何通过 api 管理或定制开发 ecs 实例

更多相关阅读请进入《Linux》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...