代码之家  ›  专栏  ›  技术社区  ›  slipperfox

命令行提示符命令(想了解它的作用)

  •  0
  • slipperfox  · 技术社区  · 3 年前

    我正在上CS50课,我已经安装了CS50。h。 基于 instructions 我在terminal中使用了以下命令来编译我的简单程序,只是想确保我理解了我要求terminal做的一切。 线路为:

    gcc -g hello.c -o hello -lcs50 -lm
    

    我知道以下*:gcc=

    • gcc=C的gnu编译器
    • -g=生成源代码级调试信息
    • 你好c=我们要编译的文件名
    • -o=写入输出文件
    • hello=我们的输出文件名

    谁能告诉我-lcs50和-lm是什么?我的猜测是,它在调用库lcs50中(-lcs50),但这也是一个猜测,我想确定。

    一切正常,没有问题

    谢谢

    2 回复  |  直到 3 年前
        1
  •  0
  •   HolyBlackCat    3 年前

    基本正确。

    • -o 不需要生成输出文件,只需要自定义名称。( -o 以下名称只能同时出现)。

    • -lcs50 意思是“链接调用的库” cs50 “,而不是 lcs50 . 它将尝试使用几种不同的名称模式来查找此文件,例如。 libcs50.so [lib]cs50.dll[.a] (在Windows上), libcs50.a (两者都有),Mac上还有其他功能。

    • -lm 链接标准数学库,但我认为您不需要在大多数现代GCC发行版上手动指定它。

        2
  •  0
  •   Leaderboard    3 年前

    对对于-lm,它用于数学库,默认情况下没有链接。这在中得到了很好的解释 Why do you need an explicit `-lm` compiler option .