Parcialmente relacionado dinâmico Linking em C

votos
2

Eu ainda estou lutando para entender a diferença principal entre a vinculação dinâmica e vinculação estática, a seguir é uma foto e código de exemplo de meu livro:

/* main2.c */
 #include <stdio.h>
 #include vector.h

 int x[2] = {1, 2};
 int y[2] = {3, 4};
 int z[2];

 int main()
 {
   addvec(x, y, z, 2);
   printf(z = [%d %d]\n, z[0], z[1]);
   return 0;
 }

e libvector.so apenas uma DLL que fornece definição necessária para main2.c

digite

Então, minhas perguntas são:

Por p2 é um 'arquivo objeto executável parcialmente ligada'? Uma vez que é chamado de 'parcialmente ligado', por isso deve ter feito alguma vinculação estática. Mas desde que nenhuma das seções de código ou de dados a partir libvector.so ou libc.so são realmente copiado para o p2 executável neste momento. Então, por que p2 ainda está 'parcialmente ligado'? não é a vinculação estática é sobre a cópia de seções de código e de dados de arquivos de objetos, se não houver uma cópia, então não há nenhuma vinculação estática envolvido?

Publicado 08/11/2018 em 06:37
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

O executável parcialmente ligada teria todos os .oarquivos objeto (aqui apenas main.o) ligados entre si, e, possivelmente, ligando tocos, mesas de realocação e tais para facilitar a ligação dinâmica. O vinculador dinâmico faz apenas os restantes "n%" logo antes de executar o programa.

Respondeu 08/11/2018 em 07:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more