¿Diferencia entre 'ld' y 'ld.so'?

¿Diferencia entre 'ld' y 'ld.so'?

Si bien ambos se denominan "enlazador" y se utilizan para vincular archivos binarios, realmente no puedo entender en qué se diferencian entre sí. ¿Alguien puede decirme sus diferencias?

Respuesta1

Sin ser demasiado técnico: ambos son "enlazadores", es decir, una herramienta que combina/carga una pieza de código compilado con/en otra pieza de código compilado.

ldes un enlazador estático, mientras que ld.soes un enlazador dinámico.

Creo que las letras soson la abreviatura de "objeto compartido" y generalmente lo verá como un sufijo de nombre de archivo de bibliotecas compartidas, es decir, bibliotecas que pueden vincularse dinámicamente a programas (una biblioteca se "comparte" entre varios programas). . Por el contrario, una biblioteca estática suele tener el sufijo de nombre de archivo .a, para "archivo" (creado por la arutilidad).

Un vinculador estático vincula un programa o biblioteca en tiempo de compilación, generalmente como último paso en el proceso de compilación, creando un ejecutable binario o una biblioteca. En el caso de un archivo ejecutable binario, puede ser un binario estático contodobibliotecas cargadas en el propio binario, o puede ser un binario vinculado dinámicamente con solo algunas bibliotecas vinculadas estáticamente.

Un vinculador dinámico carga las bibliotecas que se vincularon dinámicamente en tiempo de compilación en el espacio de direcciones del proceso en tiempo de ejecución.

Consulte los manuales ldde ld.sosu sistema.

información relacionada