¿Por qué "ldd /usr/bin/firefox" no enumera los archivos de la biblioteca?

¿Por qué "ldd /usr/bin/firefox" no enumera los archivos de la biblioteca?

Estaba siguiendo un tutorial sobre cómo averiguar las bibliotecas dependientes de un programa y se explica así:

  1. whereis firefox muestra las carpetas donde está instalado, toma la ruta completa al binario y
  2. ldd /usr/bin/firefox póngalo como argumento del comando ldd.

El tutorial también usó Firefox como ejemplo y por lo tanto estaba seguro de recrearlo, pero cuando escribí:

Respuesta1

El firefoxejecutable es un script de shell en su sistema.

Algunas aplicaciones emplean un script contenedor que configura el entorno de ejecución de la aplicación, posiblemente para permitir una mejor integración con la versión actual de Unix, o para proporcionar formas alternativas de ejecutar la aplicación (nuevos conjuntos de opciones de línea de comando, etc.) que el La aplicación en sí no proporciona. A veces se utiliza un script contenedor para elegir el binario real correcto para ejecutar en función de la forma en que se llamó ese script.

Por ejemplo, el compilador C MPI ("Message Passing Interface") no es más que un script contenedor cc(o cualquier compilador que esté configurado para usar) que garantiza que los encabezados MPI estén en la ruta de búsqueda y que la biblioteca MPI esté vinculada. al compilar.

Eche un vistazo a este script para ver qué binarios llama y en qué circunstancias.

Respuesta2

$ file $(which firefox)
/usr/bin/firefox: Bourne-Again shell script, ASCII text executable

$ tail $(which firefox)
done

# Run the browser
debugging=0
if [ $debugging = 1 ]
then
  echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
fi

exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"

información relacionada