2011-05-06 76 views
0

在我的功课,我必须使用此命令来编译我的程序:GCC编译链接某文件

的gcc -o mtm_rentals -std = C99 -Wall -pedantic-错误-Werror -DNDEBUG mtm_ex2.c rentals.c list.c -L -lmtm

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

缺少什么我在这里?我应该以某种方式实现-lmtm标志? 谢谢!

回答

3

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

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

+0

我尝试了一个点,但它仍然不认可的功能......也许我应该实现-lmtm – 2011-05-06 22:34:07

+0

你是什么意思'执行'? '你的意思是'-lmtm标志没有被声明在任何地方'?你知道'-lmtm'是做什么的吗? – hirschhornsalz 2011-05-06 22:39:15

+0

我正在做一个任务,它告诉我们使用我提到的命令。它还表示-lmtm将libmtm.a链接到程序。我不知道除此之外的任何东西...... – 2011-05-06 22:42:46