Tengo dos bibliotecas de terceros que ocasionalmente tienen el mismo nombre de símbolo exportado. Cuando se carga el ejecutable, ld suele elegir el incorrecto y como resultado me cuelgo. No puedo hacer demasiado acerca del contenido de estas bibliotecas, por lo que puede haber una forma de ordenar ld cómo encontrar la imlementación adecuada?Ocultar símbolo (s) en objeto compartido de LD
SO - Solaris 10, mi programa está construido por autoconf/autotools/gcc, las bibliotecas en conflicto son libclntsh (parte del controlador de Oracle) y OpenLDAP. Desafortunadamente, no puedo usar la implementación de Oracle del cliente LDAP, ya que le faltan muchas características que tiene OpenLDAP.
Editado: El enlace es el siguiente: libclntsh.so-> A.so-> PRINCIPAL < -B.so < -libldap_r.so
Hola Dmitry. Mira [mi pregunta] (http://stackoverflow.com/questions/9909528/how-can-i-remove-a-symbol-from-a-shared-object). Aparentemente, puede usar ['objcopy -N foo'] (http://linux.about.com/library/cmd/blcmdl1_objcopy.htm) para eliminar los símbolos de un objeto compartido. –