dos bibliotecas compartidas liba.so y libb.so. liba.so usa libb.so. Todos los archivos c se compilan con -fPIC. El enlace usa -share. Cuando llamamos dlopen en liba.so no puede encontrar símbolos en libb.so ... nosotros conseguimos el error "símbolo indefinido". Podemos drenar libb.so sin errores. Sabemos que liba está encontrando libb porque no obtenemos un error de archivo no encontrado. Obtenemos un error de archivo no encontrado cuando eliminamos libb.so. Intentamos -lutil y sin suerte.librería compartida de Linux que utiliza un símbolo indefinido biblioteca compartida
Alguna idea ????
oh sí. gcc 4.1.2
actualización: Utilizamos rpath al vincular Liba por lo que puede encontrar libB.
LDD liba.so devuelve:.
linux-gate.so.1 => (0xffffe000)
libb.so => ./libb.so (0xf6ef9000) <-------- LIBB
libutil.so.1 => /lib/libutil.so.1 (0xf6ef5000)
libdl.so.2 => /lib/libdl.so.2 (0xf6ef1000)
libm.so.6 => /lib/libm.so.6 (0xf6ec9000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf6eb1000)
librt.so.1 => /lib/librt.so.1 (0xf6ea8000)
libc.so.6 => /lib/libc.so.6 (0xf6d62000)
/lib/ld-linux.so.2 (0x007d0000)
es que significat que no hay una # al final de libB ???
Usted dice: creó dos libs (-fPIC -shared), liba.so y libb.so. liba.so está vinculado dinámicamente (o debería ser ...) con libb.so y lo usa. En un programa X intenta dlopen en libb.so y todo está bien; otro programa de prueba Y intenta liberar liba.so pero falla, sin embargo, usted sabe que liba.so encuentra libb.so correctamente ya que trató de eliminar libb.so y surge otro problema ... ¿opciones que está usando para dlopen? – ShinTakezou
Lo tienes todo bien. En este momento no usamos ninguna opción, porque se llama a dlopen desde algún programa sobre el que no tenemos control. – johnnycrash
¿Qué dice el comando 'ldd liba.so' decir? –