He compartido el objeto A.so que vincula estáticamente a libssl.a & otro objeto compartido B.so que también vincula estáticamente libssl.a.Biblioteca estática cargada dos veces
A.so & B.so tiene símbolos de libssl.a en el alcance GLOBAL. Lo comprobé por readelf -s A.so
Tengo un ejecutable a.out que carga A.so y B.so. Cuando a.out terminó, obtengo un error libre doble en uno de los símbolos de libssl.a en A.so.
Aunque libssl.a está vinculado estáticamente a cada objeto compartido, ya que están expuestos en todo el mundo, es posible que se comparta el mismo símbolo en lugar de elegir su copia local.
¿Cuál es la solución? ¿Cómo hacer que los símbolos sean locales aquí?
Por favor, ayuda
Recomendaría usar un depurador para confirmar su teoría. – jdigital
¿Podría elaborar? – KodeWarrior
Solo una pequeña cosa, porque no tengo idea de cómo aplicarlo a su situación: 'dlopen' tiene una bandera RTLD_LOCAL que en algunas circunstancias ayudaría exactamente en esta situación. Entonces, si abriste esas librerías con 'dlopen', probablemente no deberían interferir. – liori