Skip to content

Home Программирование Подключение библиотек
Подключение библиотек

Рассмотрим в качестве примера программу для возведения числа в степень

Программа power.c

#include <stdlib.h>
#include <stdio.h>
#include <math.h>int main (int argc, char ** argv)
{
if (argc < 3)
{
fprintf (stderr, "Too few arguments\n");
return 1;
}
printf <"%f\n", pow (atof ( argv[1]), atof (argv[2]>));
return 0;
}

Функции printf () и atof () реализованы в стандартной библиотеке языка С, которая автоматически подключается к проекту во время компоновки. Функция pow() принадлежит библиотеке математических функций, которую нужно подключать отдельно. Математическая библиотека, представленная файлами libm.so (динамический вариант) и libm.a (статический вариант), имеется практически в любой Linux-системе. Следовательно, для сборки приведенной программы необходимо указать следующую команду:

$ gcc -о power power.с -lm

Возникает вопрос: какая именно библиотека была подключена? Оба варианта математической библиотеки (статическая и динамическая) подходят под шаблон -lm. В таких ситуациях предпочтение отдается динамическим библиотекам. Но если при компоновке указать опцию -static, то приоритет изменится в сторону статической библиотеки:

$ gcc -static -о power power.с -lm

Теперь сравните размеры исполняемых файлов. Бинарник, полученный в результате линковки с опцией -static, значительно больше. Это обусловлено тем, что статическая библиотека полностью внедряется в исполняемый файл, а совместно используемая библиотека лишь оставляет информацию о себе.

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top