首先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內核版本。是不是你剛下的那個呢!有沒有成就感?
② linux 怎麼編譯c的源程序的gcc,編譯命令是什麼
在Linux下面,如果要編譯一個C語言源程序,我們要使用gcc編譯器。
先將源文件編譯成目標文件:gcc - c hello.c
生成hello.o文件,再將目標文件編譯成可執行文件:gcc -o hello hello.o
如:
int main(int argc,char **argv)
{
printf("Hello Linux ");
}
(2)重新編譯linux命令擴展閱讀:
在使用GCC編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,這里只介紹其中最基本、最常用的參數。具體可參考GCC Manual。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
網路_gcc
③ linux 重新掛載命令
linux 重新掛載需要先卸載再重新掛載,如果要一條命令可以通過&&符號將兩個命令組合到一個命令里,例如:
umount -l /mnt/test && mount -o ro /dev/hda1 /mnt/test
linux中掛載命令是mount,卸載是umount,在命令行中使用&&可以將多條命令組合成一條命令並順序執行,以達到快速執行的目的。
(3)重新編譯linux命令擴展閱讀
linux掛載命令mount的用法介紹:
1、語法
mount [-fnrsvw] [-t vfstype] [-o options] device dir
2、參數說明:
-V:顯示程序版本
-h:顯示輔助訊息
-v:顯示較訊息,通常和 -f 用來除錯。
-a:將 /etc/fstab 中定義的所有檔案系統掛上。
-F:這個命令通常和 -a 一起使用,它會為每一個 mount 的動作產生一個行程負責執行。在系統需要掛上大量 NFS 檔案系統時可以加快掛上的動作。
-f:通常用在除錯的用途。它會使 mount 並不執行實際掛上的動作,而是模擬整個掛上的過程。通常會和 -v 一起使用。
-n:一般而言,mount 在掛上後會在 /etc/mtab 中寫入一筆資料。但在系統中沒有可寫入檔案系統存在的情況下可以用這個選項取消這個動作。
④ 如何編譯linux版本
編譯linux內核步驟:
1、安裝內核
如果內核已經安裝(/usr/src/目錄有linux子目錄),跳過。如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel-source-2.xx.xx.rpm文件(xx代表數字,表示內核的版本號),比如RedHat linux的RPMS目錄是/RedHat/RPMS/目錄,然後使用命令rpm -ivh kernel-source-2.xx.xx.rpm安裝內核。如果沒有安裝盤,可以去各linux廠家站點或者www.kernel.org下載。
2、清除從前編譯內核時殘留的.o 文件和不必要的關聯
cd /usr/src/linux
make mrproper
3、配置內核,修改相關參數,請參考其他資料
在圖形界面下,make xconfig;字元界面下,make menuconfig。在內核配置菜單中正確設置個內核選項,保存退出
4、正確設置關聯文件
make dep
5、編譯內核
對於大內核(比如需要SCSI支持),make bzImage
對於小內核,make zImage
6、編譯模塊
make moles
7、安裝模塊
make moles_install
8、使用新內核
把/usr/src/linux/arch/i386/boot/目錄內新生成的內核文件bzImage/zImage拷貝到/boot目錄,然後修改/etc/lilo.conf文件,加一個啟動選項,使用新內核bzImage/zImage啟動。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new ### 告訴lilo預設使用新內核啟動linux ###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留舊有的啟動選項可以保證新內核不能引導的情況,還可以進入linux進行其他操作。保存退出後,不要忘記了最重要的一步,運行/sbin/lilo,使修改生效。
9、重新生成ram磁碟
如果您的系統中的/etc/lilo.conf沒有使用了ram磁碟選項initrd,略過。如果您的系統中的/etc/lilo.conf使用了ram磁碟選項initrd,使用mkinitrd initrd-內核版本號,內核版本號命令重新生成ram磁碟文件,例如我的Redhat 6.2:
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0
之後把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁碟能使系統性能盡可能的優化,具體參考/usr/src/linux/Documents/initrd.txt文件
10、重新啟動,OK!
⑤ linux編譯安裝命令
Linux編譯安裝相關命令,下面以Linux安裝MySQL工具為例進行說明,代碼如下:
1、測試環境在Linux MySQL下進行,版本系統為CentOS5,以下為相關軟體:
mysql-5.1.30
memcached-1.2.6
libevent-1.4.7-stable
memcached_functions_mysql-0.8
libmemcached-0.26
2、編譯安裝Linux MySQL
[root@localhost~]#tarxzfmysql-5.1.30.tar_001.gz
[root@localhost~]#cdmysql-5.1.30
[root@localhost~]#./configure--prefix=/usr/local/mysql51
[root@localhost~]#make
[root@localhost~]#makeinstall
[root@localhost~]#./scripts/mysql_install_db--user=mysql--skip-name-resolve
[root@localhost~]#/usr/local/mysql51/bin/mysqld_safe
#連接符&這是放入後台,&&是前一個正確執行,才會執行後一個
#Linux編譯安裝流程./configure&&make&&makeinstall(默認目錄安裝)
#./configure--prefix=/usr/local/pcre&&make&&makeinstall(指定安裝目錄)
⑥ 如何重新編譯linux內核
因為一般電腦安裝的系統都是Windows,而整個編譯過程都需要在Linux環境下實現,所以最好是在虛擬機里安裝Linux系統來完成這一過程。我使用的虛擬機是VMware-workstation-full-v7.1.4。
然後,我們需要下載一個較高版本的Linux系統的鏡像文件,安裝在虛擬機上,作為編譯環境。我使用的是ubuntu-11.04-desktop-i386。之所以選擇較高版本,是因為它的界面比較方便用戶操作。
然後下載一個Linux內核源代碼文件,將它保存到虛擬機上新安裝的系統中去。並解壓到/usr/src目錄。我使用的是linux-2.6.36,下載低版本的原因是,小巧輕便,易於編譯。
解壓命令如下:
bzip2
-d
linux-2.6.36.tar.bz2
tar
-xvf
linux-2.6.36.ta
修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一個系統調用函數。自行編寫一個簡單的程序即可,只為測試用。
修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,為新添加的程序配置系統調用號。
在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系統調用表。
下面就是最重要的內核編譯與安裝:
首先配置編譯信息,使其生成適合當前機器的Makefile,輸入make
oldconf
ig。
接著還要輸入make
menuconfig,在字元界面下進行必要的細微的修改。
然後要經過四步編譯過程(直接輸入命令即可):
(1)make
bzImage
將內核編譯為壓縮映像,存儲在源碼根目錄下的「System.map」文件中。
(2)make
moles
編譯各個模塊。
(3)sudo
make
moles_install
安裝模塊
(4)sudo
make
install
安裝內核
第(2)(3)步等待時間較長,可能需要數個小時,請耐心等待。
無報錯的話重啟進入GRUB界面,就可以看到新編譯的內核了。
按回車鍵進入我們編譯的目標內核中,用關鍵詞搜索查看新增加的系統調用「my
call」是否已在內核中:
編寫測試程序,調用新添加的系統調用:
測試成功,說明系統調用添加成功,進而說明內核編譯成功!
以上的辦法你可以試一下,希望對你有所幫助。
⑦ 怎麼重新編譯linux伺服器內核
make config首先配置內核,生成內核配置文件,如果是伺服器上的,建議使用編輯好的內核配置文件,自己在伺服器上配置比較麻煩;
make再根據生成的配置文件進行編譯;
找到新的內核就可以使用
⑧ 在linux實驗中,完成程序自動編譯的命令是什麼
到目錄下用以下命令
makefile
make
其中make是編譯
makefile是清單文件
⑨ linux上面,已經用gmake命令編好了一個工程,現在又修改了,怎麼快速編譯
你編譯時是不是加了什麼參數,默認的編譯就是只編譯更改過的文件,這是gmake本身的作用:管理工程,按照時間戳進行文件編譯。
-B 和 --always-make這兩個參數就是全部重新編譯。