㈠ linux中make, make install命令分別是什麼,用法
make是用來編譯的,它從Makefile中讀取指令,然後編譯。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。
用法:
1、make:
這一步就是編譯,大多數的源代碼包都經過這一步進行編譯(當然有些perl或python編寫的軟體需要調用perl或python來進行編譯)。
如果 在 make 過程中出現 error ,就要記下錯誤代碼(注意不僅僅是最後一行),然後可以向開發者提交 bugreport(一般在 INSTALL 里有提交地址)。
或者系統少了一些依賴庫等,這些需要自己仔細研究錯誤代碼。
make 的作用是開始進行源代碼編譯,以及一些功能的提供,這些功能由他的 Makefile 設置文件提供相關的功能。
比如 make install 一般表示進行安裝,make uninstall 是卸載,不加參數就是默認的進行源代碼編譯。
make 是 Linux 開發套件裡面自動化編譯的一個控製程序,他通過藉助 Makefile 裡面編寫的編譯規范進行自動化的調用 gcc 、ld 以及運行某些需要的程序進行編譯的程序。
一般情況下,他所使用的 Makefile 控制代碼,由 configure 這個設置腳本根據給定的參數和系統環境生成。
2、make install
這條命令來進行安裝(當然有些軟體需要先運行 make check 或 make test來進行一些測試),這一步一般需要你有 root 許可權(因為要向系統寫入文件)。

(1)makeall編譯過程擴展閱讀
當我們在使用make命令時,常常會在make後面加上其他單詞,比如check,install,installcheck…這些單詞都是make的參數,我們稱之為「目標(targets)」。
最常見的幾個目標:
make all:編譯程序、庫、文檔等(等同於make)
make install:安裝已經編譯好的程序。復制文件樹中到文件到指定的位置
make unistall:卸載已經安裝的程序。
make clean:刪除由make命令產生的文件
make distclean:刪除由./configure產生的文件
make check:測試剛剛編譯的軟體(某些程序可能不支持)
make installcheck:檢查安裝的庫和程序(某些程序可能不支持)
make dist:重新打包成packname-version.tar.gz
㈡ linux下的 make all是什麼意思啊,另外,make all之後要怎麼執行程序啊。。我菜鳥。。
make的意思是應用你編譯好的配置或者原先源碼包的配置到系統
make有許多參數,這些參數取決於當下的makefile腳本文件。make的腳本裡面是一些設定好的自動執行語句,一般來說,在輸入make以及必要的參數以後是不需要再進行干預了(但有些時候會出現中途的選擇)。
而編譯是在make之前完成的,一個沒有被本地計算機編譯的源碼包里只包含基本的配置文檔,這些是為了給configure編譯腳本准備的,並沒有適應本地計算機的配置需要。所以,一般來說,執行未編譯完全的源碼包是危險的。。。而且一般來說不會成功
一般的配置編譯——安裝是這樣的(在源碼包里的readme是作者給出的說明文檔):
./configure
./make
./make install
____________________________________
makefile.save是一個備份因該。因為一旦加上擴展名就不能在你makefile時直接執行了。
makefile是需要「寫」的。。。手寫 。。部分代碼可以自動生成,你可以去出一下其他的資料,因為著部分比較復雜
㈢ 請教linux make make clean make all 的具體用法
這個要看你的Makefile的,約定俗成的而已
一般"潛規則"
make就是make all,編譯用的,具體編譯了那些文件要看你的Makefile
make install就是把編譯出來的二進制文件,庫,配置文件等等放到相應目錄下
make clean清除編譯結果
具體的東西都在Makefile裡面,只不過大部分應用程序的Makefile都是由configure腳本自動生成的,所以Makefile內容都差不多
㈣ 編譯內核時候直接make和make all的區別
make all = make = make bzImage + make moles
這樣
㈤ winarm的make all和make clean怎麼用
make clean僅僅是清除之前編譯的可執行文件及配置文件。
而make distclean要清除所有生成的文件。
Makefile
在符合GNU Makefiel慣例的Makefile中,包含了一些基本的預先定義的操作:
㈥ rk3188的uboot.img怎麼編譯
U-Boot編譯命令對於mini2440開發板,編譯U-Boot需要執行如下的命令:$makemini2440_config$makeall使用上面的命令編譯U-Boot,編譯生成的所有文件都保存在源代碼目錄中。為了保持源代碼目錄的干凈,可以使用如下命令將編譯生成的文件輸出到一個外部目錄,而不是在源代碼目錄中,下面的2種方法都將編譯生成的文件輸出到/tmp/build目錄:$exportBUILD_DIR=/tmp/build$makemini2440_config$makeall或$makeO=/tmp/buildmini2440_config(注意是字母O,而不是數字0)$makeall為了簡化分析過程,方便讀者理解,這里主要針對第一種編譯方式(目標輸出到源代碼所在目錄)進行分析。2.1.2U-Boot配置、編譯、連接過程U-Boot開頭有一些跟主機軟硬體環境相關的代碼,在每次執行make命令時這些代碼都被執行一次。1.U-Boot配置過程(1)定義主機系統架構HOSTARCH:=$(shelluname-m|\sed-es/i.86/i386/\-es/sun4u/sparc64/\-es/arm.*/arm/\-es/sa110/arm/\-es/powerpc/ppc/\-es/ppc64/ppc/\-es/macppc/ppc/)「sed–e」表示後面跟的是一串命令腳本,而表達式「s/abc/def/」表示要從標准輸入中,查找到內容為「abc」的,然後替換成「def」。其中「abc」表達式用可以使用「.」作為通配符。命令「uname–m」將輸出主機CPU的體系架構類型。作者的電腦使用IntelCore2系列的CPU,因此「uname–m」輸出「i686」。「i686」可以匹配命令「sed-es/i.86/i386/」中的「i.86」,因此在作者的機器上執行Makefile,HOSTARCH將被設置成「i386」。(2)定義主機操作系統類型HOSTOS:=$(shelluname-s|tr'[:upper:]''[:lower:]'|\sed-e's/\(cygwin\).*/cygwin/')「uname–s」輸出主機內核名字,作者使用Linux發行版Ubuntu9.10,因此「uname–s」結果是「Linux」。「tr'[:upper:]''[:lower:]'」作用是將標准輸入中的所有大寫字母轉換為響應的小寫字母。因此執行結果是將HOSTOS設置為「linux」。(3)定義執行shell腳本的shell#Setshelltobashifpossible,otherwisefallbacktoshSHELL:=$(shellif[-x"$$BASH"];thenecho$$BASH;\elseif[-x/bin/bash];thenecho/bin/bash;\elseechosh;fi;fi)"$$BASH"的作用實質上是生成了字元串「$BASH」(前一個$號的作用是指明第二個$是普通的字元)。若執行當前Makefile的shell中定義了「$BASH」環境變數,且文件「$BASH」是可執行文件,則SHELL的值為「$BASH」。否則,若「/bin/bash」是可執行文件,則SHELL值為「/bin/bash」。若以上兩條都不成立,則將「sh」賦值給SHELL變數。由於作者的機器安裝了bashshell,且shell默認環境變數中定義了「$BASH」,因此SHELL被設置為$BASH。(4)設定編譯輸出目錄ifdefOifeq("$(originO)","commandline")BUILD_DIR:=$(O)endifendif函數$(origin,variable)輸出的結果是一個字元串,輸出結果由變數variable定義的方式決定,若variable在命令行中定義過,則origin函數返回值為"commandline"。假若在命令行中執行了「exportBUILD_DIR=/tmp/build」的命令,則「$(originO)」值為「commandline」,而BUILD_DIR被設置為「/tmp/build」。ifneq($(BUILD_DIR),)saved-output:=$(BUILD_DIR)#.$(shell[-d${BUILD_DIR}]||mkdir-p${BUILD_DIR})若${BUILD_DIR}表示的目錄沒有定義,則創建該目錄。#Verifyifitwassuccessful.BUILD_DIR:=$(shellcd$(BUILD_DIR)&&/bin/pwd)$(if$(BUILD_DIR),,$(erroroutputdirectory"$(saved-output)"doesnotexist))endif#ifneq($(BUILD_DIR),)若$(BUILD_DIR)為空,則將其賦值為當前目錄路徑(源代碼目錄)。並檢查$(BUILD_DIR)目錄是否存在。OBJTREE:=$(if$(BUILD_DIR),$(BUILD_DIR),$(CURDIR))SRCTREE:=$(CURDIR)TOPDIR:=$(SRCTREE)LNDIR:=$(OBJTREE)……MKCONFIG:=$(SRCTREE)/mkconfig……ifneq($(OBJTREE),$(SRCTREE))obj:=$(OBJTREE)/src:=$(SRCTREE)/elseobj:=src:=endifCURDIR變數指示Make當前的工作目錄,由於當前Make在U-Boot頂層目錄執行Makefile,因此CURDIR此時就是U-Boot頂層目錄。執行完上面的代碼後,SRCTREE,src變數就是U-Boot代碼頂層目錄,而OBJTREE,obj變數就是輸出目錄,若沒有定義BUILD_DIR環境變數,則SRCTREE,src變數與OBJTREE,obj變數都是U-Boot源代碼目錄。而MKCONFIG則表示U-Boot根目錄下的mkconfig腳本。2.makemini2440_config命令執行過程下面分析命令「makemini2440_config」執行過程,為了簡化分析過程這里主要分析將編譯目標輸出到源代碼目錄的情況。mini2440_config:unconfig@$(MKCONFIG)$(@:_config=)其中的依賴「unconfig」定義如下:unconfig:@rm-f$(obj)include/config.h$(obj)include/config.mk\$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp\$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep其中「@」的作用是執行該命令時不在shell顯示。「obj」變數就是編譯輸出的目錄,因此「unconfig」的作用就是清除上次執行make*_config命令生成的配置文件(如include/config.h,include/config.mk等)。$(MKCONFIG)在上面指定為「$(SRCTREE)/mkconfig」。$(@:_config=)為將傳進來的所有參數中的_config替換為空(其中「@」指規則的目標文件名,在這里就是「mini2440_config」。$(text:patternA=patternB),這樣的語法表示把text變數每一個元素中結尾的patternA的文本替換為patternB,然後輸出)。因此$(@:_config=)的作用就是將mini2440_config中的_config去掉,得到mini2440。因此「@$(MKCONFIG)$(@:_config=)」實際上就是執行了如下命令:./mkconfigmini2440即將「mini2440」作為參數傳遞給當前目錄下的mkconfig腳本執行。在mkconfig腳本中給出了mkconfig的用法:#Parameters:TargetArchitectureCPUBoard[VENDOR][SOC]因此傳遞給mkconfig的參數的意義分別是:mini2440:Target(目標板型號)arm:Architecture(目標板的CPU架構)arm920t:CPU(具體使用的CPU型號)mini2440:Boardsamsung:VENDOR(生產廠家名)s3c24x0:SOC
㈦ linux使用make命令編譯時出現什麼提示證明make成功呢
如果編譯出錯的話,make就會停止,然後列印出一堆Error,如果成功編譯完了,是沒有Error、錯誤等字樣出現的。判斷是否成功只要看make列印信息的末尾是不是有Error。
如果想見證一下錯誤,就在源代碼里故意弄幾個錯誤,make最後就會出錯,然後可以觀察一下錯誤信息。
㈧ Linux內核源碼如何編譯
首先uname -r看一下你當前的linux內核版本
1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。
重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。
最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?
打字不易,如滿意,望採納。