Ho condiviso l'oggetto A.so che collega staticamente a libssl.a & un altro oggetto condiviso B.so che collega anche staticamente libssl.a.Libreria statica caricata due volte
A.so & B.so ha simboli da libssl.a in ambito GLOBAL. L'ho controllato da me stesso -s A.so
Ho un eseguibile a.out che carica A.so e B.so. Alla fine di a.out, ricevo un doppio errore libero in uno dei simboli da libssl.a in A.so.
Anche se libssl.a è collegato staticamente a ciascun oggetto condiviso, poiché sono esposti a livello globale è possibile che lo stesso simbolo sia condiviso invece di prelevarne la copia locale.
Qual è la soluzione alternativa? Come rendere i simboli locali qui?
Si prega di aiutare
Si consiglia di utilizzare un debugger per confermare la propria teoria. – jdigital
Potresti elaborare? – KodeWarrior
Solo una piccola cosa, perché non ho idea di come applicarlo alla tua situazione: 'dlopen' ha un flag RTLD_LOCAL che in alcune circostanze potrebbe aiutare proprio in questa situazione. Quindi se hai aperto quelle librerie con 'dlopen', probabilmente non dovrebbero interferire in quel momento. – liori