2015-04-05 24 views
-1

我目前正在進行類分配。分配是在c中創建一個鏈表。但是因爲我們這是一個班級作業,所以我們有一些限制:如何鏈接C中的兩個文件

我們有一個我們無法修改的頭文件。 我們有交流文件,它是LinkedList的 我們有交流文件,它只是一個主要方法只是爲了測試LinkedList的

頭文件中定義了一個主要方法,所以當我試圖建立失敗LinkedList的,因爲有不是主要方法。我該怎麼做才能解決問題?導入測試文件(這會導致另一個錯誤)?

+1

你是否試圖建立沒有main.c文件的鏈表?聽起來他們應該全部一起編譯。 – brianjob 2015-04-05 23:26:04

+0

@brianjob我該怎麼做? – SDK4 2015-04-05 23:39:50

回答

3

我假設你的三個文件被稱爲header.h,main.c中,並linkedlist.c

gcc main.c linkedlist.c -o executable 

這將創建一個名爲「可執行」

注意可執行的二進制這也假設你使用gcc作爲編譯器。

0

與大多數語言一樣,C支持模塊。我假設你的任務需要編譯一個模塊。與完整課程不同,模塊缺乏切入點。粗略地說,它們是圖書館的功能集合。編譯模塊時,不進行鏈接。 你可以像這樣編譯一個模塊:gcc -c linkedlist.c - >這實際上會產生linkedlist.o,這是一個模塊。嘗試執行此鏈接列表。(將其模式更改爲可執行文件後,因爲默認情況下不會這樣)。部分原因是你不能執行這個模塊,因爲它沒有被執行的格式。其中一些原因並非如此,它缺乏切入點(我們稱之爲「主要」)和聯繫。你的任務似乎提供了一個測試'main.c',如果你想使用它,你只需要將'main.c'(實際編譯成main.o)和linkedlist.o鏈接起來。要真正做到這一點,只需輸入gcc -o name_of_your_program main.c linkedlist.o。實際上,這裏所做的是,你的編譯器首先將main.c編譯成一個main.o模塊,然後將這兩個模塊連在一起,並用-o選項給出它,但編譯器非常聰明,不需要明確他需要採取的步驟。現在,如果你想知道更多關於這個東西的知識,你必須嘗試瞭解編譯器如何做它們的工作。谷歌可以比以往任何時候都更能幫助你。祝你好運。