請問 make clean 與 make mrproper 的差異



贊助商連結


頁 : [1] 2

b90220208
2006-07-11, 08:20 AM
如題,請問 make clean 與 make mrproper 的差異....

在 kernel source 裡頭下 #make help 可知:
--------------------------------------------
Cleaning targets:
clean - remove most genearted files but keep the config
mrproper - remove all generated files + config + various backup files.


為何一般在編譯 kernel 時既已先執行了 make mrproper 還要再執行 make clean 如上文所述前者所清除掉的不是大(多)於後者嗎? :confused:

贊助商連結


wally
2006-07-22, 05:36 PM
是的, 如果先作了 make mrproper, 就不需再 make clean

b90220208
2006-07-24, 12:18 AM
是的, 如果先作了 make mrproper, 就不需再 make clean

感謝.

真的嗎?...但為何我的書的確是兩步驟都有執行(教人編譯kernel之章節)

imyoyopp
2006-07-24, 10:02 AM
make mrproper : 保證 Source Code 是乾淨的 !! (一拿到 Source Code 所以執行的動作)
----------------------------------------------
make clean : 將曾經產生過的 *.o 檔清除掉. (*.o 它是什麼時候產生的呢 ?? 在 make 的時候..)
(保留編譯的成果 , 可省略這一個步驟)
----------------------------------------------
小弟猜測您的步驟大至如下 ..

(1) Get SourceCode.tar.bz2
(2) tar xvjpf SourceCode.tar.bz2
(3) make mrproper : (一拿到 Source Code 所以執行的動作)
(4) make menuconfig
(5) make
(6) make install
(7) make clean : (保留編譯的成果 , 可省略這一個步驟)
(8) 修改 grub

----------------------------------------------
第 (7) 步個人認為是,個人習慣的問題 .... (不高興也可以每次都重頭來過啊 ..)

b90220208
2006-07-25, 03:46 AM
Thanks#

所謂 -- make mrproper : 保證 Source Code 是乾淨的 !! --是何意?
難道下載來的 source code tarball 會有非原始樣貌(全新的)的情形??.....此步驟在何種情況下可省略?

另外,
我書上 (以討論 kernel 2.6 為主) 的 make clean 是在 make menuconfig 之後及 make zImage 之前,但卻無提到 make 與 make install ,請問與 imyoyopp 兄說的步驟有何差別嗎?


以下列出其提到的所有步驟:
(1) Get SourceCode.tar.gz
(2) tar zxvf SourceCode.tar.gz
(3) make mrproper : (一拿到 Source Code 所以執行的動作)
(4) make menuconfig
(5) make clean (書上說,若是未編譯過的全新 source 則可省略)
Q -> 但 wally 兄說的是 ~如果先作了 make mrproper, 就不需再 make clean~ .....兩說法感覺不太一樣,可否為我解疑惑??
Q -> 請問,定要執行時,既然功用相仿,可用make mrproper 取代嗎?
(6) make zImage
(7)
cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz-2.6.9
ln -s /boot/vmlinuz-2.6.9 /boot/vmlinuz
(8)
make modules
make modules_install
(9)
cp /usr/src/linux/System.map /boot/System.map-2.6.9
ln -s System.map-2.6.9 System.map
(10) 修改 grub

imyoyopp
2006-07-25, 10:48 AM
:jump: 看來我好像幫您省了不少動作厚 ~ (遺漏了很多....)
------------------------------------------------------------

所謂 -- make mrproper : 保證 Source Code 是乾淨的 !! --是何意?
(1) SourceCode.tar.gz , 它是一個壓縮檔 , 從同事或任何地方拿到時 , 很有可能內容已變更過(這裡指 configure 檔).


此步驟在何種情況下可省略?
(2) 個人習慣啦 ! (為了省掉一堆麻煩 , 我想您一定不會省掉這一步的 ..)
------------------------------------------------------------

另外,
我書上 (以討論 kernel 2.6 為主) 的 make clean 是在 make menuconfig 之後及 make zImage 之前,但卻無提到 make 與 make install ,請問與 imyoyopp 兄說的步驟有何差別嗎?
(3) 這裡要向您說聲 拍 Say !! 是我的錯 , 還請見諒嘿 .. :D (哪就先跳過 , 以您書上講的為前提 , 有興趣的話 , 建議您找些 make 相關的書籍 KK)
------------------------------------------------------------

(5) make clean (書上說,若是未編譯過的全新 source 則可省略)
Q -> 但 wally 兄說的是 ~如果先作了 make mrproper, 就不需再 make clean~ .....兩說法感覺不太一樣,可否為我解疑惑??
Q -> 請問,定要執行時,既然功用相仿,可用make mrproper 取代嗎?

(4) 這樣講好了 ~ (要開始唬爛了) :jump:

make menuconfig --> 會產生 ".config" (您在 `make menuconfig` 中所做的動作)
make zImage --> 開始編譯 (會花點時間) , 編譯後就會產生 *.o , vmlinuz , System.map (大至上是這樣)

make mrproper --> 回到初始裝態 (移除 *.o , 清除".config")
make clean --> 移除 *.o (不會清除 ".config")

b90220208
2006-07-25, 09:42 PM
我翻了幾本書與網站都沒看到編譯核心時有用到
make
make install
只有提到編譯好後只須 copy bzImage 與 System.map 到 /boot 之下.....我糊塗了?

另外請教,
make bzImage 所製造出來的 kernel 映像檔是屬於所謂的 executable file(binary file) 嗎?


最後還是老問題:
make mrproper 也會執行到 make clean (詳見摩托學園 (http://moto.debian.org.tw/viewtopic.php?t=1308&sid=9c259f153b867762abeceaba28d913b2))
所以 wally 兄所說的 ~如果先作了 make mrproper, 就不需再 make clean~ 算是"鐵則"囉??

imyoyopp
2006-07-26, 10:22 AM
我翻了幾本書與網站都沒看到編譯核心時有用到
make
make install
只有提到編譯好後只須 copy bzImage 與 System.map 到 /boot 之下.....我糊塗了?

關於這點,小弟在此向您說聲 ~ 對不起 ~ 誤導了您的思考方向 .. (編譯核心 !! 沒有 !! 沒有 !!) :jump2:
-------------------------------------------------

另外請教,
make bzImage 所製造出來的 kernel 映像檔是屬於所謂的 executable file(binary file) 嗎?
-------------------------------------------------
bzImage (big zImage) : 是用 gzip 壓縮的,至於壓縮檔等不等於 binary file 呢 ..... ( 嗯災 :D )


所以 wally 兄所說的 ~如果先作了 make mrproper, 就不需再 make clean~ 算是"鐵則"囉??

嗯嗯 ~
-------------------------------------------------
:|||: 突然覺得自己是來亂的 :D ~ 擔誤大家時間,拍 Say ~

b90220208
2006-07-26, 10:58 AM
不好意思,關於我前文所提到的(摩托學園 (http://moto.debian.org.tw/viewtopic.php?t=1308&sid=9c259f153b867762abeceaba28d913b2)) -- make mrproper 也會執行到 make clean

可否請教是如何看出來的呢?.....謝謝.

imyoyopp
2006-07-26, 03:53 PM
不好意思,關於我前文所提到的( 摩托學園 ) -- make mrproper 也會執行到 make clean

可否請教是如何看出來的呢?.....謝謝.
(1) 假設下載的 kernel 叫 -> "linux-2.x.xx.tar.bz2"
(2) 解壓的後得到的目錄 -> linux-2.xx.xx
(3) 在 linux-2.xx.xx 底下會有個叫 Makefile 的檔案
(4) 您在 Makefile 中,可以找到這一行 -> "mrproper: clean archmrproper"
(5) 這一行的意思 : 遇到 mrproper 這個 target 時,去找 clean (執行),還有 archmrproper (執行),如果找不到 archmrproper 就不往下做了.
------------------------------------------------------------------