kitkat - paneles de control android
mylib.so tiene reubicaciones de texto. Esto es un desperdicio de memoria y es un riesgo de seguridad. Por favor, arregla (4)
En resumen, debe compilar su biblioteca con uno de los -fpic
o -fPIC
, donde PIC es una abreviatura de Código independiente de la posición .
La respuesta más larga es que su yourlib.so se ha compilado de una manera que no cumple con el estándar de Android de Google para un archivo ELF, donde esta entrada de Dynamic Array Tag
es inesperada. En el mejor de los casos, la biblioteca seguirá ejecutándose, pero sigue siendo un error y es probable que la versión futura de AOS no permita su ejecución.
DT_TEXTREL 0x16 (22)
Para verificar qué hay en tu biblioteca usa algo como la línea de:
# readelf --wide -S yourlib.so
There are 37 section headers, starting at offset 0x40:
Section Headers:
[Nr] Name Type Address Off Size ES Flg Lk Inf Al
[ 0] NULL 0000000000000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS 0000000000000000 002400 068f80 00 AX 0 0 16
[ 2] .rodata PROGBITS 0000000000000000 06b380 05ad00 00 WA 0 0 32
...
[16] .rela.text RELA 0000000000000000 26b8e8 023040 18 14 1 8
...
[36] .rela.debug_frame RELA 0000000000000000 25a608 0112e0 18 14 27 8
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
Por favor vea mi extensa respuesta sobre el tema, para más detalles de la DT entry
. Para obtener detalles sobre cómo escribir bibliotecas dinámicas adecuadas, esta es una lectura obligatoria .
Mi aplicación de Android (usando la biblioteca nativa) imprime esta advertencia en Android 4.4:
Linker mylib.so tiene reubicaciones de texto. Esto es un desperdicio de memoria y es un riesgo de seguridad. Por favor, arregla.
¿Tienes una idea de qué es y cómo solucionarlo? Gracias,
Esto parece ser el resultado de dos errores ndk-gcc mencionados en https://code.google.com/p/android/issues/detail?id=23203
y declaró que se han corregido a partir de ndk-r8c.
Parece que la comprobación de bibliotecas con el problema se ha agregado recientemente.
Nota: no edite esta publicación para ocultar la URL del enlace. Es explícito porque el destino es lo que lo hace autoritario.
Nota adicional Cambiar las versiones del NDK es solo una solución cuando la advertencia se debe al código de su aplicación. No tendrá ningún efecto si la advertencia se encuentra en cambio en un componente del sistema como libdvm, que solo puede solucionarse mediante una actualización del sistema.
Tengo el mismo error con mi aplicación. La aplicación estaba usando un demonio nativo que usaba una biblioteca nativa que no estaba implementando todas las funciones en su archivo de encabezado. Cuando agregué las implementaciones necesarias a la biblioteca nativa, todo funcionó.
No sé si tiene exactamente el mismo problema, pero probablemente solo signifique que su lado nativo tiene alguna discrepancia.
-fpic
hacer que el código en la posición de su biblioteca sea independiente ... agregue -fpic
o -fPIC
a su LOCALC_FLAGS
en su Android.mk y también debe asegurarse de que no está enlazando con ninguna biblioteca estática o compartida que contenga reubicaciones de texto sí mismos. Si lo hacen y puede volver a compilarlos, use uno de los indicadores mencionados anteriormente.