Los compiladores y ensambladores traducen los procedimientos de forma individual y almacenan los resultados en memoria secundaria. Antes de ejecutar el programa, todos los procedimientos traducidos deben recuperarse y enlazarse correctamente. El cargador coloca el código de máquina en memoria para su ejecución, mientras que el ligador une los módulos compilados de forma independiente en un solo programa ejecutable e incorpora las rutinas de bibliotecas requeridas.