O que faz a ligação dinâmica vs estática?

0

Quando é dito que na vinculação dinâmica o vinculador resolve os endereços das bibliotecas compartilhadas no tempo de execução, isso significa que o mesmo vinculador usado no vinculador estático é chamado no tempo de execução? Por exemplo, ao usar o gcc, como gcc mysource.c -o myprog , ele pula a etapa de vinculação se a vinculação dinâmica for usada? Se a vinculação dinâmica é usada, é o mesmo vinculador gcc chamado toda vez que o programa é executado, ou este vinculador é de alguma forma diferente (ou seja, vem com o sistema operacional)?

Se a vinculação dinâmica é usada e a vinculação técnica ainda não aconteceu quando o arquivo executável é gerado, por que o arquivo é executável (já que perdeu o estágio de vinculação)? Ou não é realmente executável até que a vinculação dinâmica tenha acontecido?

    
por Celeritas 12.10.2013 / 00:33

1 resposta

1

"Executável" significa apenas "capaz de ser carregado por um carregador". É o carregador responsável pela vinculação dinâmica. O vinculador em tempo de compilação grava informações no cabeçalho do executável sobre quais bibliotecas e símbolos são usados, e o carregador lê essas informações para realizar a vinculação.

    
por 12.10.2013 / 00:38