Подтвердить что ты не робот

Параметры GCC -lm -lz -lrt - о чем они?

Я знаю, что это некоторые общие/базовые библиотеки, но что они означают?

Например, я знаю, что -lm является некоторой математической библиотекой, но является ли это стандартной математической библиотекой или что?

-lz для сжатия? Какое сжатие?

И я не знаю, что это такое - -lrt.


Может ли кто-то указать эти вещи:

  • math library - то же самое, что мы используем, когда мы включаем <cmath> или <math.h>?
  • compress library - что это значит - предоставляет некоторые инструменты, которые мы можем использовать для сжатия файлов, или помогает компилятору/компоновщику выполнять некоторые сжимающие вещи?
4b9b3361

Ответ 3

Коммутатор -lX обычно означает загрузку библиотеки libX.so.

libm - стандартная математическая библиотека; он содержит sin(), cos(), atanh(), все эти хорошие вещи.

libz - это Zlib, библиотека сжатия, которая может выполнять gzip, deflate и несколько других форматов.

Есть несколько разных librt: один - это расширения в реальном времени POSIX; другая - библиотека вспомогательных программ общего назначения.

Ответ 5

Ответы выше все правильные. Единственное, что я хотел бы добавить, будучи самим новичком C, состоит в том, что аргумент -l указывает компилятору связать ваш код с какой-то библиотекой.

Путаница для меня и, возможно, других заключается в том, что нет места при вызове -l плюс имя lib. поэтому -lz, вы ссылаетесь на "z"

Обратите внимание, что эти библиотеки установлены в вашей системе. Либо они пришли с дистрибутивом, который вы используете, либо вы установили с помощью диспетчера пакетов или скомпилированы из источника (make, make install...). Поскольку это очень простая (и старая) библиотека APIS, у них очень короткие имена. По мере продвижения и установки определенных библиотек в вашей системе вы увидите более подробные имена, помеченные тегом -l.