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 № 1Has 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
.