/ / ¿OS X tiene dos enlazadores? ¿Una estática y otra dinámica? - macos, enlazador, ld, enlace dinámico, dyld

¿OS X tiene dos enlazadores? ¿Una estática y una dinámica? - macos, enlazador, ld, enlace dinámico, dyld

El problema es que he descubierto que Mac OS X tiene un dyld (como entendí un enlazador dinámico) pero también un ld de enlazador simple (como entendí uno estático).

La pregunta es: ¿es realmente así? ¿Dos enlazadores? ¿Una estática y otra dinámica?

¿Por qué han decidido tener dos? Linux tiene un solo enlazador (ld) que realiza enlaces tanto estáticos como dinámicos.

Respuestas

4 para la respuesta № 1

Has entendido mal el significado de "vincular". O, pensando en otra forma, no te has dado cuenta de que tiene dos significados.

Si te ayuda, piensa en dyld como la dinámica cargador en lugar de "enlazador". dyld es el programa que carga las bibliotecas dinámicas a las que hace referencia un ejecutable en el espacio de direcciones del proceso. Todavía implica la vinculación porque requiere la resolución de referencias de símbolos.

Nunca invocas dyld como parte de un procedimiento de construcción. Siempre usas ld o, más típicamente, le pide al compilador que vincule su programa e invoca ld en su nombre. dyld solo se usa en tiempo de ejecución.

Usted es incorrecto cuando afirma que Linux no tiene esta distinción. Linux tiene un cargador dinámico, ld.so, que es distinto del enlazador estático, ld.