Если мы скомпилируем простую программу helloworld со статическим и динамическим связыванием, мы легко увидим разницу в размере, как показано ниже,
#include <stdio.h>
int main(int argc, char **argv) {
printf("Hello World !");
return 0;
}
Создайте динамически связанный исполняемый файл как,
$ gcc -o helloworld helloworld.c
Кроме того, создайте статически связанный исполняемый файл как
$ gcc -o helloworld_static helloworld.c -static
$ ls -alh helloworld
-rwxrwxr-x 1 myuser myuser 7.2K Sep 2 21:08 helloworld
$ size helloworld
text data bss dec hex filename
1124 276 4 1404 57c helloworld
$ ls -alh helloworld_static
-rwxrwxr-x 1 myuser myuser 712K Sep 2 21:08 helloworld_static
$ size helloworld_static text data bss dec hex filename
658287 4096 3644 666027 a29ab helloworld_static
, следовательно, наблюдения за выполнением простой программы helloworld следующие,
Статически связанный исполняемый файл требует больше места по сравнению с динамически связанным исполняемым файлом.Недостаток статического компоновки и преимущество динамического компоновки.
Для динамически связанных исполняемых файлов в памяти находится только одна копия общей библиотеки.Если несколько процессов вызывают один и тот же объектный модуль общей библиотеки одновременно, все они используют одну и ту же копию библиотеки.Принимая во внимание, что для статического связывания все используемые объекты библиотеки копируются в каждый исполняемый файл.Таким образом, копии каждого библиотечного объекта находятся в памяти для каждого из различных процессов.Это приводит к увеличению объема оперативной памяти, используемой для исполняемых файлов со статической связью, чем для динамически связанных исполняемых файлов.
Для динамического связывания требуется больше системных вызовов, что означает, что для динамически связанных исполняемых файлов потребуется больше времени для запуска /выполнение.
Если вы хотите более подробное объяснение, с фактической трассировкой системного вызова с использованием strace
во время выполнения программы, вы можете посетить страницу, на которой я писал об этой проблемемой сайт .