2012-03-11 58 views
0

我不清楚makefile中的內容,以及頭文件中的內容。頭文件和makefile的格式和用途是什麼? (C)

據我瞭解生成文件的格式爲:

target: dependencies 
     instructions 

但是,這並沒有爲我工作。這裏正是我所做的:

library: login.o linked.o cipher.o 
    gcc -o library login.o linked.o cipher.o 

login.o: login.c linked.h 
    gcc -c login.c 

linked.o: linked.c cipher.h 
    gcc -c linked.c 

cipher.o: cipher.c 
    gcc -c cipher.c 

當我輸入「make生成文件」進入命令行編譯器說「使:對`的Makefile'做沒什麼」。我猜我的格式錯了。另外,圖書館的部分是什麼?我只是從某處複製它。每個makefile都有嗎?

另外,是否有makefile的擴展名(makefile.txt,makefile.c)?

而且makefile必須被命名爲makefile嗎?我可以將它命名爲taliasmakefile或makefile69或lykeim2freespirited4skool或iwanaBahippie?

至於頭文件,我找不到任何明確的例子,他們究竟是什麼。 您是否包含希望其他文件能夠訪問的變量?或功能原型?

我真的很陌生C.可以有人解釋這個給我像我5嗎?

+1

您是否確保使用製表符縮進說明而不是空格?使用選項卡執行操作非常重要。 – Flexo 2012-03-11 23:23:49

+1

Makefiles與C完全正交。它們只是將C源代碼編譯成應用程序自動化的常用工具。如果你想開發一個頭文件如何工作的理解,我建議獲得[一本好書](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)。 – 2012-03-12 00:02:29

回答

4

當您運行make時,它會查找名爲Makefile的文件;您不必指定要使用的生成文件。沒有任何參數,make將(通常)構建文件中的第一個目標。 Makefiles不需要擴展名,並且可以命名爲其他內容(但您必須告訴make在哪裏查看)。

頭文件的函數原型,類型和你需要從你把.c文件(加上一些其他的東西像預處理#define s表示派上用場)代碼訪問(全局)變量。

1

有兩個階段來建立C軟件.....編譯和鏈接。

編譯將.C文件轉換爲目標文件。

鏈接取得所有這些目標文件,並將它們一起存入庫或可執行文件。

頭文件在編譯期間使用...它有關於你應該在鏈接時找到的東西的信息。即..應該有一個稱爲X的函數,應該有一個名爲Y的變量,等等......或者它定義了一些東西,所以它們在幾個C文件中是通用的。例如MAX_WIDGETS。即一個.c文件可以使用另一個.c文件中實現的內容,或者定義在.c文件中通用的內容。

Makefiles都是關於如何使用.h .c並通過編譯,然後鏈接以及想要對這些文件執行的任何其他轉換來運行它們。

0

makefile沒什麼問題,但沒有叫做「makefile」的目標。使用-f選項選擇文件:make -f makefile。但是你不需要它,因爲你的文件有一個標準的名字(Makefile,makefile,...)。

相關問題