2011-05-25 135 views
2

我正在開發一個C程序,奇怪的是,當我更新源文件時,我沒有看到生成的可執行文件中的任何更改。是否有可能gcc存儲文件的緩存副本,即使我編譯我沒有得到我的可執行文件的較新版本?在這種情況下,我該如何強制編譯器使用新編輯的文件?gcc和緩存

我編譯我的代碼如下:

# gcc -o myExecFileName source_file_1.c source_file2.c 
+3

你用什麼命令編譯和鏈接? – geoffspear 2011-05-25 17:01:39

+2

您是否在再次編譯文件之前保存文件? – Mahesh 2011-05-25 17:01:58

+0

這取決於你如何編譯?一個一個的文件,然後鏈接一切?或者給gcc每個文件? – 2011-05-25 17:02:47

回答

2

要回答你的問題,沒有gcc不會緩存你的文件。其他事情正在發生。您要麼改變@Lee D建議的不同目錄中的文件,要麼在編譯之前沒有保存文件,或者您正在進行的更改可能已被刪除。

0

這聽起來像你的makefile是不正常的。 make使用文件時間來確定是否運行編譯步驟。不過,您必須擁有自己的依賴才能正常運行。

觀察:

hello: hello.c 
    $(CC) hello.c -o hello 

在第一行,hello: hello.c手段看的文件hello.c時間戳,如果它比日期和時間舊的hello(或者,如果hello不存在),然後運行下面指定的compliation。

+3

從評論看來,他甚至沒有使用makefile。 – delnan 2011-05-25 17:15:15

+0

評論出現之前已回覆 - 但我要離開它,因爲這是從Google到達這裏的人最有可能的有用解決方案。 – tylerl 2011-05-25 17:22:15

+0

我沒有使用makefile ...我試圖做一個,它編譯但是...沒有真正改變。我的編譯器瘋了嗎?!? – haunted85 2011-05-25 17:44:12

0

檢查以確保您編輯的是正在編譯的相同文件。如果您在多個窗口中使用多個版本的文件,則可能不是這種情況。上週發生在我身上。