【问题标题】:GCC -lm -lz -lrt options - what are they about?GCC -lm -lz -lrt 选项——它们是关于什么的?
【发布时间】:2011-04-14 12:18:07
【问题描述】:

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

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

-lz 用于压缩?什么压缩?

我不知道这是什么 - -lrt


有人可以指定这些东西吗:

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

【问题讨论】:

  • 回答您的第二点,压缩库提供了您可以在应用程序中使用的例程。假设您有一个数据缓冲区,您希望在通过线路发送之前对其应用一些压缩 - 这个库提供了一个操作系统,专利的无阻碍压缩算法来做到这一点。
  • @Nim - 哈!谢谢。已接受答案(:
  • +1,好问题@KirilKirov

标签: c++ unix gcc linker


【解决方案1】:

【讨论】:

    【解决方案2】:

    开关 -lX 一般表示加载库 libX.so。

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

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

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

    【讨论】:

    • 那么,这个“数学库”是我们使用的标准吗,包括“cmath”(或“math.h”)?
    • -l 还将加载带有扩展库的库。 -lA 可以加载 libA.so 或 libA.lib
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:
      【解决方案5】:

      以上答案都是正确的。作为一个 C 新手,我要补充的一件事是 -l 参数告诉编译器将您的代码与某个库链接。

      对我和其他人来说,困惑是在调用-l 加上库的名称时没有空格。所以-lz,你正在链接到“z”

      请注意,这些库已安装在您的系统中。它们要么是您使用的发行版附带的,要么是您使用包管理器安装的或从源代码编译的(makemake install ...)。 由于这些是非常基本的(和旧的)库 API,它们的名称非常短。随着您在系统中进行并安装特定库,您会看到更详细的名称标记 -l 那里。

      【讨论】:

        猜你喜欢
        • 2016-08-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多