【问题标题】:gcc compiling linking .a filegcc编译链接.a文件
【发布时间】:2011-05-06 22:08:01
【问题描述】:

在我的作业中,我必须使用这个命令来编译我的程序:

gcc -o mtm_rentals -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG mtm_ex2.c Rentals.c list.c -L -lmtm

我可以在该行中更改的是我在 -DNDEBUG 之后编写的文件。当我这样做时,gcc 说有对特定函数的未定义引用。现在这些函数在 .h 文件中声明,并在名为 libmtm.a 的给定文件中实现 我的结论是它不能识别 libmtm.a,但我们的作业任务说 -lmtm 标志(未在任何地方声明)应该将 libmtm.a 链接到程序。

我在这里错过了什么?我应该以某种方式实现 -lmtm 标志吗? 谢谢!

【问题讨论】:

    标签: gcc linker compilation


    【解决方案1】:

    -L 后面缺少.(单点)。

    -lmtm 将链接到libmtm 库,这是正确的。这不是-lmtm 标志,它是与mtm 连接的-l 标志,您要链接的库。这个库在一些预定义的路径(如/usr/lib/)中搜索,另外在 -L 给出的路径中搜索。假设libmtm 存在于您的当前目录中,您需要将其添加到-L,这是通过. 完成的。

    【讨论】:

    • 我尝试了一个点,但它仍然无法识别功能......也许我应该实现 -lmtm
    • “实施”到底是什么意思? '-lmtm 标志未在任何地方声明'到底是什么意思?你知道'-lmtm'是做什么的吗?
    • 我正在做一个作业,它告诉我们使用我提到的命令。它还说 -lmtm 将 libmtm.a 链接到程序。除此之外我什么都不知道...
    • 可能不会,否则你不会问如​​何“实施”-lmtm。实现链接器标志没有意义。查看 -l 标志的作用,因为 -lmtm 就是这样。编译器找不到 libmtm 是不是一开始就出现错误消息?
    • 我尝试在没有 -L 的情况下运行该命令。然后它才说它找不到lmtm ...当我使用-L时。它没有说它找不到lmtm。错误是这样的:“在函数printCars': : undefined reference to mtmPrintCar'”
    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2016-02-12
    相关资源
    最近更新 更多