Linux下包含相同符号表的两个库的冲突问题(郁闷)
这个问题烦扰我很长时间了,特上来请教各位大侠。
假设存在两个库 libA.so, libB.so, 内部有相同的内部函数名 TestFunc, 但是各自实现不一样。
在libA.so中, 函数 ComputeA 使用到了 TestFunc
在libB.so中, 函数 ComputeB 使用到了 TestFunc
其中函数ComputeA, ComputeB都在可执行程序 program中使用到。program是采用下面这种方式生成的:
g++ -L./ -g -o program program.o -Wl,-rpath=./ -lA -lB
然后在实际运行program过程中发现:
在调用函数 ComputeB 用到了居然是 libA.so中的 TestFunc, 而不是 libB.so中的 TestFunc, 以至于程序就崩溃了。
也就是说, 两个包含相同函数的库,在链接时,会先在第一个链接库中查找,如果查找到了就不会去 下一个库中查找。
在不修改libA.so, 和 libB.so 两个库的情况下, 让 program程序查找符号表时,优先在各自的库中查找?
谢谢