假设我有版本1.1和1.2的libA.so,它们都定义了相同的符号。
如果myApp需要来自libA的符号但错误地链接两个版本会发生什么:
ld -o myApp -Lpath -lA_1_1 -lA_1_2
我是否正确它会使用第一个符号,只要它能找到它?
答案 0 :(得分:0)
我是否正确它会使用第一个符号,只要它能找到它?
是的,总的来说。这可能不是你想要的。
如果foo()
中的某个函数libA_1_2
调用了库中的另一个公共函数bar()
,那么它将使用libA_1_1
中的符号,这可能会执行错误的操作(例如,如果库的v1.2已更改,以便foo()
期望bar()
取消分配一些内存,但bar()
的v1.1版本不会这样做)