GCC -lm -lz -lrt选项 - 它们是关于什么的?

时间:2011-04-14 12:18:08

标签: c++ unix gcc linker

我知道,这些是一些常见的/基本的库,但它们究竟是什么意思?

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

-lz进行压缩?什么压缩?

我不知道这是什么 - -lrt


有人可以指定这些内容:

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

5 个答案:

答案 0 :(得分:20)

答案 1 :(得分:3)

-lz链接到zlib,-lm到math和-lrt到realtime extensions库。

答案 2 :(得分:2)

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

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

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

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

答案 3 :(得分:1)

答案 4 :(得分:0)

以上答案都是正确的。我要添加的一件事,就是我自己的C新手,是-l参数告诉编译器将代码链接到某个库。

对我和其他人来说,混淆是在调用-l加上lib的名称时没有空间。所以-lz,您正在链接到&#34; z&#34;

请注意,这些库已安装在您的系统中。他们使用您正在使用的发行版,或使用包管理器安装或从源代码编译(makemake install ...)。 由于这些是非常基本的(和旧的)库APIS,因此它们的名称非常短。当您在系统中进行并安装特定的库时,您会看到更多详细的名称标记-l