Me encontré con una referencia a él recientemente en proggit y (a partir de ahora) no se explica.
Sospecho que esto podría ser, pero no estoy seguro.
c
linux
environment-variables
Hank Gay
fuente
fuente

Respuestas:
Si establece
LD_PRELOADla ruta de un objeto compartido, ese archivo se cargará antes que cualquier otra biblioteca (incluido el tiempo de ejecución Clibc.so). Entonces, para ejecutarlscon sumalloc()implementación especial , haga esto:fuente
LD_PRELOAD. La razón es que, al ser una variable de entorno, la heredan los procesos secundarios, que pueden tener un directorio de trabajo diferente al proceso principal. Por lo tanto, cualquier ruta relativa no podría localizar la biblioteca para precargarla.Puede anular los símbolos en las bibliotecas de valores creando una biblioteca con los mismos símbolos y especificando la biblioteca en
LD_PRELOAD.Algunas personas lo usan para especificar bibliotecas en ubicaciones no estándar, pero
LD_LIBRARY_PATHes mejor para ese propósito.fuente
Con
LD_PRELOADusted puede dar prioridad a las bibliotecas.Por ejemplo, puede escribir una biblioteca que implemente
mallocyfree. Y al cargar estos conLD_PRELOADsumallocyfreese ejecutará en lugar de los estándar.fuente
calloc? ¿No lo estropearía todo?mallocy gratis están específicamente diseñados en glibc para permitir esto y el stockcalloclogra llamar a su importadomalloc. No intente esto con ninguna otra función. No funcionará tan bien.Como muchas personas mencionaron, usar
LD_PRELOADpara precargar la biblioteca. Por cierto, puede VERIFICAR si la configuración está disponible porlddcomando.Ejemplo: suponga que necesita precargar el suyo
libselinux.so.1.Por lo tanto, configure su entorno de precarga:
Verifique su biblioteca nuevamente:
fuente
LD_PRELOADenumera las bibliotecas compartidas con funciones que anulan el conjunto estándar, tal como lo/etc/ld.so.preloadhace. Estos son implementados por el cargador/lib/ld-linux.so. Si desea anular solo algunas funciones seleccionadas, puede hacerlo creando un archivo de objeto y configurandoLD_PRELOAD; las funciones en este archivo de objeto anularán solo aquellas funciones dejando a otras como estaban.Para obtener más información sobre las bibliotecas compartidas, visite http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
fuente
Aquí hay una publicación de blog detallada sobre la precarga:
https://blog.cryptomilk.org/2014/07/21/what-is-preloading/
fuente
es fácil exportar
mylib.soa env:deshabilitar :
fuente
unset LD_PRELOADcuando se utiliza LD_PRELOAD, ese archivo se cargará antes que cualquier otra
$export LD_PRELOAD=/path/liblib para cargarse previamente, incluso esto también se puede usar en programasfuente
Usando la
LD_PRELOADruta, puede forzar al cargador de aplicaciones a cargar el objeto compartido proporcionado, por encima del valor predeterminado proporcionado.Los desarrolladores usan esto para depurar sus aplicaciones al proporcionar diferentes versiones de los objetos compartidos.
Lo hemos usado para hackear ciertas aplicaciones, anulando las funciones existentes usando objetos compartidos preparados.
fuente