¿Cuál es la diferencia entre un compilador y un enlazador en C?¿Cuáles son las diferencias entre un compilador y un enlazador?
Respuesta
El compilador convierte el código escrito en un lenguaje de programación legible para el hombre en una representación de código de máquina que su procesador entiende. Este paso crea archivos objeto.
Una vez que este paso lo realiza el compilador, se necesita otro paso para crear un ejecutable operativo que pueda invocarse y ejecutarse, es decir, asociar las llamadas de función (por ejemplo) que su código compilado necesita invocar para trabajo. Por ejemplo, su código podría llamar al sprintf
, que es una rutina en la biblioteca estándar de C. Su código no tiene nada que haga el servicio real provisto por sprintf
, simplemente informa que debe ser llamado, pero el código real reside en algún lugar de la biblioteca C común. Para realizar este (y muchos otros) enlaces, se debe invocar el vinculador. Después de vincular, obtienes el ejecutable real que se puede ejecutar.
Un compilador genera archivos de código objeto (lenguaje de máquina) desde el código fuente.
A linker combina estos archivos de código objeto en un archivo ejecutable.
Muchos IDEs los invocan en sucesión, por lo que nunca se ve realmente el enlazador en funcionamiento. Algunos lenguajes/compiladores no tienen un enlazador distinto y el compilador realiza los enlaces como parte de su trabajo.
- 1. ¿Cuáles son las diferencias entre un UIView y un CALayer?
- 2. ¿Cuáles son las diferencias entre un Compilador Just-in-Time y un Intérprete?
- 3. ¿Cuáles son las diferencias entre $ {} y # {}?
- 4. ¿Cuáles son las diferencias entre un programa y una aplicación?
- 5. Cuáles son las diferencias en JIT entre Java y .Net
- 6. ¿Cuáles son las diferencias entre Vanilla Perl y Strawberry Perl?
- 7. ¿Cuáles son las diferencias entre AssemblyVersion, AssemblyFileVersion y AssemblyInformationalVersion?
- 8. ¿Cuáles son las diferencias y similitudes entre MVC y MVVM?
- 9. ¿Cuáles son las diferencias fundamentales entre OSGi y Java EE?
- 10. ¿Cuáles son las diferencias entre touchmove y gesturechange?
- 11. ¿Cuáles son las diferencias entre romper y salir?
- 12. ¿Cuáles son las diferencias entre OllyDbg y WinDbg?
- 13. ¿Cuáles son las diferencias entre JSP y Facelets?
- 14. ¿Cuáles son las diferencias entre Flash Professional y Flash Builder?
- 15. ¿Cuáles son las diferencias entre PEG y CFG?
- 16. ¿cuáles son las diferencias exactas entre jsch ChannelExec y ChannelShell?
- 17. ¿Cuáles son las diferencias entre delegados y eventos?
- 18. ¿Cuáles son las diferencias entre la lechuga y la pictografía?
- 19. ¿Cuáles son las diferencias entre Doctrine1 y Doctrine2?
- 20. ¿Cuáles son las diferencias actuales entre jQuery y Prototype?
- 21. ¿Cuáles son las diferencias entre LinFu.DynamicProxy y Castle.DynamicProxy?
- 22. ¿Cuáles son las diferencias entre NSURLConnection y ASI-HTTP-Request?
- 23. ¿Cuáles son las principales diferencias entre Meteor, Ember.js y Backbone.js?
- 24. ¿Cuáles son las principales diferencias entre Cocoa y CocoaTouch?
- 25. ¿Cuáles son las diferencias reales entre Zend Framework y Django?
- 26. ¿Cuáles son las principales diferencias entre Sinatra y Ramaze?
- 27. ¿Cuáles son las mayores diferencias entre fopen y curl?
- 28. ¿Cuáles son las diferencias entre MVC, MVP y MVVM?
- 29. ¿Cuáles son las diferencias entre VBA 6.0 y VBA 7.0?
- 30. ¿Cuáles son las diferencias entre Gtk + y Qt?
+1 buena explicación. Tenga en cuenta que en la mayoría de los sistemas operativos, en realidad hay * dos * vinculadores involucrados: el enlazador que se ejecuta después de la compilación y produce el archivo ejecutable (generalmente llamado "enlazador") y el enlazador que enlaza en bibliotecas cargadas dinámicamente (también conocidas como .so o. dll) en el momento de la ejecución (generalmente llamado "enlazador dinámico"). – sleske