1. 程式人生 > >***沒有規則可以建立“XXX”需要的目標“XXX”問題的解決方案

***沒有規則可以建立“XXX”需要的目標“XXX”問題的解決方案

每個詭異錯誤的背後。都隱藏著一個低階錯誤。 真理重新得到驗證。正如只所以會有這篇博文也是如此,拿別人的一個uboot原始碼直接過來編譯,操作如下:

頂層Makefile已經生成完畢

#make clean

#make mini2440_config

#make

出現錯誤如下:

給我的第一感覺分析,我該清的都清了,前面不是已經做了make clean操作了麼?現在是不是Makefile出現了問題,我該原始碼具備的編譯環境,我的原始碼需要放在特定的路徑下編譯,種種答案一一嘗試,而該問題給我的迴應是無止無休的***沒有規則可以建立***類似的錯誤。所有的方法用盡,最後來了個大掃除,make  distclean,再make mini2440_config,make,編譯竟然一次性通過,沒有任何問題。截圖如下:

對於問題不能知其然而不知其所以然,毛主席教導我們要有實事求是的作風,本人也一直秉著必須要知其然也知其所以然的態度,下面讓我們來探究一下,為什麼make distclean可以解決這個問題。

首先我們不得不提到:make clean 和make distclean的區別:

make clean僅僅是清除之前編譯的可執行檔案及配置檔案。

而make distclean要清除所有生成的檔案 make distclean類似make clean,但同時也將configure生成的檔案全部刪除掉,包括Makefile。

我們本著拿來主義的精神,但是拿來主意也讓我們的人生道路中荊棘叢叢,從上面的解析可以看出,上面的問題的根源是因為,經過拿來主義的程式碼裡面已經有配置檔案,是根據原來的編譯環境生成的,僅僅通過make clean並不能清楚之前的配置檔案,沒有清除之前的配置檔案就進行編譯,編譯器本著相信程式設計師的態度,編譯時不會產生新的configure生成的附帶檔案,而是根據原來的configure生成的檔案進行編譯,這樣就會導致上面的一系列編譯錯誤。make distclean可以將所有的垃圾,之前環境所有的餘孽清理乾淨,這樣就不會給編譯器偷懶的機會。那麼一個饅頭引發的血案就解析完畢。