假设有libA。因此,在1.1和1.2版本中,它们都定义了相同的符号。
如果myApp需要libA中的一个符号,但错误地链接了两个版本,会发生什么:
ld -o myApp -Lpath -lA_1_1 -lA_1_2
我是对的,它会使用第一个符号,只要它能找到它?
我是对的,它会使用第一个符号,只要它能找到它?
一般来说是的。这可能不是你想要的。
如果libA_1_2
中的函数foo()
调用库中的另一个公共函数bar()
,那么它将使用libA_1_1
中的符号,这可能会做错误的事情(例如,如果库的v1.2更改为foo()
期望bar()
释放一些内存,但v1.1版本的bar()
不这样做)。