Ligação estática e dinâmica
Existem dois tipos de executáveis binários: vinculados estaticamente e dinamicamente. Primeiro, sobre os vinculados estaticamente : quando um programa deseja chamar uma função de biblioteca, ele se refere a ele pelo nome. Ao criar o programa a partir da fonte, todas as funções da biblioteca usadas no programa são copiadas da biblioteca para o programa. O programa então contém seu próprio código, bem como o código das funções da biblioteca que ele usa. Em seguida, nos locais de chamada, o nome é alterado para o endereço da função correspondente no programa. Esse processo é chamado de vinculação porque vincula o nome de uma função à própria função, sua implementação. Chama-se estática , porque o link não pode ser alterado após a criação do programa.
Programas vinculados dinamicamente funcionam de maneira diferente: O programa também se refere às funções da biblioteca por nome. Ao criar o programa, duas listas são montadas e armazenadas juntamente com o programa: uma lista de quais funções da biblioteca são usadas em quais locais e uma lista das bibliotecas que contêm as funções usadas pelo programa. Isso é tudo para criar o programa.
Posteriormente, no tempo de execução , um programa auxiliar especial, o chamado vinculador dinâmico, procura em locais específicos no sistema de arquivos cada biblioteca da lista de bibliotecas e o carrega na memória. Agora, o vinculador dinâmico sabe em que endereços de memória as funções da biblioteca estão disponíveis. Ele usa a primeira lista para escrever o endereço correto em todos os locais que chamam funções de biblioteca. Em seguida, o programa vinculado dinamicamente pode ser executado.