Mam obiekt współdzielony, który statycznie łączy się z libssl.a & innym udostępnionym obiektem B.to, który również statycznie łączy libssl.a.Biblioteka statyczna załadowana dwukrotnie
A.so & B.to ma symbole z biblioteki libssl.a w zasięgu GLOBAL. Sprawdziłem to przez readelf -s A.so
Mam plik wykonywalny a.out, który ładuje A.so i B.so. Po zakończeniu a.out otrzymuję podwójnie wolny błąd w jednym z symboli z biblioteki libssl.a w A.so.
Mimo że biblioteka libssl.a jest statycznie połączona z każdym obiektem udostępnionym, ponieważ są one udostępnione na całym świecie, to jest możliwe, że ten sam symbol jest udostępniany zamiast wybierania jego lokalnej kopii.
Co to jest obejście tego problemu? Jak ustawić tutaj symbole?
Proszę pomóc
Polecam użycie debuggera do potwierdzenia twojej teorii. – jdigital
Czy mógłbyś rozwinąć? – KodeWarrior
To tylko mała rzecz, ponieważ nie mam pojęcia, jak zastosować ją do twojej sytuacji: 'dlopen' ma flagę RTLD_LOCAL, która w pewnych okolicznościach może pomóc w tej właśnie sytuacji. Więc jeśli otworzyłeś te biblioteki z 'dlopen', prawdopodobnie nie powinny w tym czasie ingerować. – liori