¿Puedo usar mi propio ld.so.cache?

14

ldconfig tiene dos opciones interesantes:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

Traté de copiar /etc/ld.so.confen mi propio directorio de inicio y lo edité para incluir rutas a mis bibliotecas locales, por ejemplo, /home/syockit/local/usr/libetc. Y ejecuté

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

y posteriormente, para confirmar que las bibliotecas están en caché, ejecuté

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

e incluye todas mis bibliotecas además de las bibliotecas del sistema.

Ahora, quiero que el enlazador predeterminado use estos dos. Pero en man ld.so, no veo ninguna mención de poder usar personalizado .confo .cache. Entonces, ¿cuál es el punto de las dos opciones anteriores de ldconfigentonces?

syockit
fuente

Respuestas:

9

Creo que la respuesta a su pregunta es no, aunque puede lograr lo mismo de otras maneras.

en man ld.so, no veo ninguna mención de poder usar .conf o .cache personalizados

Es cierto, pero hay mención de $LD_LIBRARY_PATHy y --library-path, el primero es más útil en general.

¿Cuál es el punto de las dos opciones anteriores de ldconfigentonces?

Por lo tanto, puede crear un caché sin sobrescribir el sistema y sin tener que usar las confs del sistema.

encerrada dorada
fuente
...¿Sólo por el gusto de hacerlo? ¿O es para el sistema forense?
syockit
1
Podría ser una imagen del sistema o de un entorno chroot, etc., para
GOLDILOCKS
5

/etc/ld.so.confsolo se lee por ldconfig(el programa de generación de caché), no por ld.so(el cargador dinámico). Puede cambiar la ubicación del archivo de configuración si desea generar un caché diferente del predeterminado del sistema.

/etc/ld.so.cachese lee ld.soy no se puede hacer que se lea desde una ubicación diferente. No obstante, puede ser útil pasar una ubicación de salida diferente a ldconfig. El caso de uso más común es probablemente entornos chroot . Puede usar ldconfig -r /some/rootpara ejecutar ldconfigen una raíz alternativa y colocar la salida donde desee (dentro o fuera de esa raíz). Tendrá que emitir la salida en /some/root/etc/ld.so.cacheo copiarla allí más tarde. Hay otros casos de uso bastante oscuros, por ejemplo, si desea ejecutarse ldconfigcomo un usuario sin privilegios (que no puede escribir /etc/ld.so.cache) y luego mover el archivo a su lugar más tarde.

Gilles 'SO- deja de ser malvado'
fuente