原文:linux 动态库的符号冲突问题

最近,给同事定位了一个符号表的冲突问题,简单记录一下。 A代码作为静态链接库,被包含进了B代码,然后编译成了动态链接库,B.so A代码同时作为静态链接库,被编译进入了main的主代码。 main函数调用B.so里面的函数,同时B.so里面的函数调用了A代码,结果进程异常退出了。 查看符号表,发现调用的A代码,其实运行的是直接编译进入main主函数的代码,而不是B.so里面包含的A代码。 而且比较 ...

2017-12-04 09:07 0 1574 推荐指数:

查看详情

解决动态符号冲突

一次debug遇到的疑惑 某天发现一个程序有点问题。祭上print大法,在关键的 lib_func() 函数里添加 print 调试信息,重新编译运行。 期望 print 出的信息一点都没有,但是程序确确实实又执行过了 libfunc() ,因为除了添加的调试 print 没有执行 ...

Wed May 26 22:38:00 CST 2021 0 260
Linux环境下 动态so 中全局变量冲突问题

项目调试过程中遇到Linux环境下动态so中全局变量相互冲突问题问题具体描述如下: 单个进程 A运行时需要加载两个动态B.so与C.so ,这两个动态均链接了静态D.a。静态 D.a存在全局变量且只能初始化一次。进程A加载B.so 正常,加载C.so 提示D.a 初始化 ...

Thu Feb 27 23:04:00 CST 2020 0 1976
jQuery中 $ 符号冲突问题

jQuery中 $ 符号冲突问题是常见问题之一。 在jQuery中, $是jQuery的别名,为了书写方便,我们更习惯用$('#id')这一类的方式来书写代码。当同一页面引用了jQuery多个版本或者jQuery与某些其他js产生冲突,控制台就会 ...

Fri Nov 04 23:41:00 CST 2016 3 1230
linux命令查看文件链接的动态 各种符号

最直接的就用 ldd + 可执行文件: 可以看到可执行文件需要哪些动态,以及在当前环境下实际连接到的路径。 除了ldd,还有一些其它工具: readelf 都可以看file 查看文件类型strings 查看目标文件里所有可打印的字符串,或者非文本文件的 loadable ...

Tue Apr 19 18:55:00 CST 2022 0 1236
linux上静态动态的编译和使用(附外部符号错误浅谈)

主要参考博客gcc创建和使用静态动态 对于熟悉windows的同学,linux上的静态.a相当于win的.lib,动态.so相当于win的.dll. 首先简要地解释下这两种函数的区别,参考《Linux程序设计》 1. 静态也被称为归档文件(archive,因此创建命令是ar ...

Thu Feb 02 06:19:00 CST 2017 0 4252
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM