Я все еще пытаюсь понять разницу между динамическими и статическими ссылками, ниже приведены картинка и пример кода из моего учебника:
/* 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;
}
и libvector.so просто DLL, которая обеспечивает определение, необходимое для main2.c
Итак, мои вопросы:
Почему p2 является «частично связанным исполняемым объектным файлом»? Так как он называется «частично связанным», он должен был выполнить статическое связывание. Но поскольку ни один из разделов кода или данных из libvector.so или libc.so на самом деле не копируется в исполняемый файл p2. Так почему же p2 все еще «частично связан»? Разве статическое связывание не связано с копированием кода и разделов данных из файлов объектов, если нет копии, то не задействовано статическое связывание?