使似乎比較文件修改時間與某種修改時間的內部緩存。有誰知道這個緩存位於何處或如何訪問它?哪裏使存儲緩存?
Q
哪裏使存儲緩存?
2
A
回答
4
使用實用程序(如strace
)查看它在做什麼。在這裏,我們可以關注make程序執行的所有文件操作(-e trace=file
)。
比方說,我們有foo.c
和由它使用簡單的Makefile看起來建成了foo
,如:
$ cat Makefile
foo: foo.c
讓我們運行make
:
$ strace -e trace=file make
execve("/usr/bin/make", ["make"], [/* 20 vars */]) = 0
...
open("Makefile", O_RDONLY) = 3
stat("Makefile", {st_mode=S_IFREG|0644, st_size=11, ...}) = 0
...
stat("foo", 0x7ffd4373c8c0) = -1 ENOENT (No such file or directory)
stat("foo.c", {st_mode=S_IFREG|0644, st_size=36, ...}) = 0
cc foo.c -o foo
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=27717, si_status=0, si_utime=0, si_stime=0} ---
stat("foo", {st_mode=S_IFREG|0755, st_size=8549, ...}) = 0
+++ exited with 0 +++
這裏可以看到,它檢查對於foo
的存在並且未能找到它,它會檢查是否存在foo.c
,然後調用規則來編譯它。
現在,你可以打電話再次進行,你會得到略有不同的結果:
$ strace -e trace=file make
...
stat("foo", {st_mode=S_IFREG|0755, st_size=8549, ...}) = 0
stat("foo.c", {st_mode=S_IFREG|0644, st_size=36, ...}) = 0
make: `foo' is up to date.
+++ exited with 0 +++
如果有正在使用某種形式的緩存文件,我們希望看到一個open()
和read()
反對。如果這個緩存在兩次運行之間使用,那麼我們也希望看到一個write()
。
4
的緩存因此是您文件系統:
- 的
make
程序讀取 makefile文件, - 決定的目標和依賴, 列表
- 觀察到這些目標和依賴項的時間戳,
- 從您指定的目標(或默認目標,即生成文件中的第一個目標)後退工作,以找到其依賴關係較新的目標。
- 它運行過時目標的規則,並重復,直到一切都是最新的。
由於它執行規則,它構建的目標預計會更新(更新),但它會從文件系統的初始檢查轉移到下一個過期目標,即使目標不是實際更新。
重新執行make
強制重新開始分析,使用文件系統的當前狀態。
相關問題
- 1. DNS緩存爲Ubuntu存儲在哪裏?
- 2. 緩存在哪裏保存?
- 3. 哪裏df.cache()存儲
- 4. .NET「獨立存儲」存儲在哪裏?
- 5. SDWebImage的緩存在哪裏?
- 6. iOS緩存在哪裏?
- 7. DataContractSerializer的緩存在哪裏?
- 8. Glassfish 2.1在哪裏存儲緩存的JSP?
- 9. magento在哪裏存儲其緩存的圖像?
- 10. git克隆密碼在哪裏存儲或緩存?
- 11. 哪裏AngularJS存儲高速緩存數據
- 12. 緩存每小時更新一次 - 在哪裏存儲?
- 13. Firefox的離線存儲緩存目錄在哪裏?
- 14. 哪裏和如何是一個UIWebview的sessionStorage緩存/存儲
- 15. ASP.NET中存儲的緩存信息在哪裏?
- 16. vim在哪裏存儲自定義密鑰映射緩存?
- 17. Android在哪裏存儲緩存的數據?
- 18. 當它們被緩存時,AngularJS HTTP存儲對象在哪裏?
- 19. Adobe AIR瀏覽器存儲在哪裏緩存?
- 20. 在哪裏存儲數據?
- 21. NSXMLParser:哪裏存儲值?
- 22. Properties.Settings.Default存儲在哪裏?
- 23. .data()在哪裏存儲值?
- 24. Express.js/Passport.js:req.user存儲在哪裏?
- 25. OCUnit在哪裏存儲NSUserDefaults?
- 26. BaseX Db在哪裏存儲?
- 27. 在哪裏存儲配置
- 28. 宏在哪裏存儲?
- 29. inodes存儲在哪裏?
- 30. $ _SESSION存儲在哪裏?
我認爲它只檢查是否有任何來源比結果 –
薩米是正確的。沒有緩存。 – reinierpost