GCC -lm -lz -lrt选项 – 它们是什么?

我知道,这些是一些常见的/基本的图书馆,但它们究竟意味着什么?

例如,我知道, -lm是一些math库,但这是标准的math库还是什么?

-lz压缩? 什么压缩?

我不知道这个是什么 – – -lrt


有人可以指定这些东西:

  • math库 – 当我们包含<cmath><math.h>时,我们使用的是相同的吗?
  • 压缩库 – 这是什么意思 – 提供了一些工具,我们可以用来压缩文件,或帮助编译器/链接器做一些压缩的东西?

  • -lz – 是zlib, -lz
  • -lm – 是你制定的数学库(实现定义AFAIK)
  • -lrt – 提供POSIX实时扩展: http : -lrt

-lz链接到zlib ,-lm链接到数学 ,-lrt链接到实时扩展库。

开关-lX通常意味着加载库libX.so.

libm是标准的数学库; 它包含sin(),cos(),atanh(),所有这些好东西。

libz是Zlib,一个压缩库,可以做gzip,deflate和其他一些格式。

有一些不同的librt在那里:一个是POSIX实时扩展; 另一个是通用编程辅助工具库。

上面的答案都是正确的。 我要补充的一点是,自己是C新手,是-l参数告诉编译器把你的代码和一些库链接起来。

对我和其他人来说可能是混淆的,那就是在调用-l加上lib的名字时没有空格。 所以-lz ,你链接到“z”

请注意,这些库已安装在您的系统中。 要么他们与您正在使用的发行版一起,要么使用软件包管理器make install ,要么从源代码make编译( makemake install …)。 由于这些都是非常基础的(和旧的)图书馆APIS,所以它们的名字很短。 当你在你的系统中进行并安装特定的库时,你会在这里看到更多详细的名字。