我正在開發一個C程序,奇怪的是,當我更新源文件時,我沒有看到生成的可執行文件中的任何更改。是否有可能gcc存儲文件的緩存副本,即使我編譯我沒有得到我的可執行文件的較新版本?在這種情況下,我該如何強制編譯器使用新編輯的文件?gcc和緩存
我編譯我的代碼如下:
# gcc -o myExecFileName source_file_1.c source_file2.c
我正在開發一個C程序,奇怪的是,當我更新源文件時,我沒有看到生成的可執行文件中的任何更改。是否有可能gcc存儲文件的緩存副本,即使我編譯我沒有得到我的可執行文件的較新版本?在這種情況下,我該如何強制編譯器使用新編輯的文件?gcc和緩存
我編譯我的代碼如下:
# gcc -o myExecFileName source_file_1.c source_file2.c
要回答你的問題,沒有gcc不會緩存你的文件。其他事情正在發生。您要麼改變@Lee D建議的不同目錄中的文件,要麼在編譯之前沒有保存文件,或者您正在進行的更改可能已被刪除。
這聽起來像你的makefile是不正常的。 make
使用文件時間來確定是否運行編譯步驟。不過,您必須擁有自己的依賴才能正常運行。
觀察:
hello: hello.c
$(CC) hello.c -o hello
在第一行,hello: hello.c
手段看的文件hello.c
時間戳,如果它比日期和時間舊的hello
(或者,如果hello
不存在),然後運行下面指定的compliation。
檢查以確保您編輯的是正在編譯的相同文件。如果您在多個窗口中使用多個版本的文件,則可能不是這種情況。上週發生在我身上。
你用什麼命令編譯和鏈接? – geoffspear 2011-05-25 17:01:39
您是否在再次編譯文件之前保存文件? – Mahesh 2011-05-25 17:01:58
這取決於你如何編譯?一個一個的文件,然後鏈接一切?或者給gcc每個文件? – 2011-05-25 17:02:47