Link de duas bibliotecas compartilhadas com alguns dos mesmos símbolos

I link com duas bibliotecas compartilhadas diferentes. As duas bibliotecas definem alguns símbolos que compartilham um nome, mas têm implementações diferentes. Não posso fazer com que cada biblioteca use sua própria implementação em detrimento da outr

Por exemplo, as duas bibliotecas definem uma função globalbar() que cada um chama internamente. A biblioteca um chama defoo1() e a biblioteca dois chama defoo2().

Lib1.so:

T bar
T foo1()     // calls bar()

Lib2.so:

T bar
T foo2()     // calls bar()

Se eu vincular meu aplicativo ao Lib1.so e depois ao Lib2.so, a implementação da barra do Lib1.so será chamada mesmo ao chamarfoo2(). Se, por outro lado, vincular meu aplicativo ao Lib2.so e, em seguida, Lib1.so, então bar, é sempre chamado de Lib2.so.

Existe uma maneira de fazer uma biblioteca sempre preferir sua própria implementação acima de qualquer outra bibliotec

questionAnswers(3)

yourAnswerToTheQuestion