2011-05-06 73 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