在我的作业中,我必须使用此命令编译我的程序:
gcc -o mtm_rentals -std = c99 -Wall -pedantic-errors -Werror -DNDEBUG mtm_ex2.c rental.c list.c -L -lmtm
我能改变的是我在-DNDEBUG之后写的文件。当我这样做时,gcc说有特定功能的未定义引用。现在这些函数在.h文件中声明,并在名为libmtm.a的给定文件中实现 我得出结论,它不承认libmtm.a,但我们的家庭作业任务说-lmtm标志(未在任何地方声明)应该将libmtm.a链接到程序。
我在这里失踪了什么?我应该以某种方式实现-lmtm标志? 谢谢!
答案 0 :(得分:3)
您在.
后面缺少-L
(单点)。
-lmtm
会链接到libmtm
库,这是正确的。它不是-lmtm
标志,它是与-l
连接的mtm
标记,即您要链接的库。在一些预定义的路径(如/usr/lib/
)中搜索此库,另外在-L给出的路径中搜索。假设libmtm
存在于您当前的目录中,您需要将其添加到-L
,这是通过.
完成的。