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

8

Si bien ambos se llaman "vinculadores" y se utilizan para vincular binarios, realmente no puedo entender cómo se diferencian entre sí. ¿Alguien puede decirme sus diferencias?

iBug
fuente

Respuestas:

8

Sin ser demasiado técnico: ambos son "vinculadores", es decir, una herramienta que combina / carga un fragmento de código compilado con / en otro fragmento de código compilado.

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

Las letras soson, creo, abreviatura de "objeto compartido", y generalmente lo verá como un sufijo de nombre de archivo de bibliotecas compartidas, es decir, bibliotecas que pueden estar vinculadas dinámicamente en programas (una biblioteca está "compartida" entre varios programas) . En contraste, una biblioteca estática a menudo tiene el sufijo del nombre del archivo .a, para "archivo" (creado por la arutilidad).

Un enlazador estático enlaza un programa o biblioteca en tiempo de compilación, generalmente como el ú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 con todas las bibliotecas 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 para ldy ld.soen su sistema.

Kusalananda
fuente