『壹』 如何升級centos7內核並且編譯
、使用 elrepo rpm包升級
查看前系統內核版本 uname -r
1. 導入key
rpm --import
2. 安裝 elrepo yum源
rpm -Uvh
3. 安裝內核
yumelrepo源新版本內核直接yum安裝即
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
5. 設置系統啟順序
查看系統啟項:
cat /boot/grub2/grub.cfg |grep menuentry
發現新版本內核設置新版本內核默認啟:
grub2-set-default 'CentOS linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
查看默認啟系統版本grub2-editenv list:
顯示'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
6. reboot重啟再查看 uname -r
二、使用源碼編譯安裝升級
1 載內核源碼
載網址
wget xxx
2 解壓並進入源碼目錄
3 更新系統並安裝依賴軟體
#yum update
#yum upgrade
#yum groups install Development Tools
#yum install ncurses-devel qt-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel
4 前內核配置文件拷貝前目錄
本應該執行make menuconfig自定義內核配置配置文件.config; 直接使用原系統內核配置拷貝/boot目錄配置文件前目錄
cp /boot/config-2.6.32-431.11.2.el6.x86_64 .config
5 使用前內核配置
#sh -c 'yes "" | make oldconfig' #centos 6
#sh -c 'y "" | make oldconfig' #centos 7
6 編譯安裝
#make bzImage
#make moles
#make moles_install
#make install
7 設置系統啟順序
查看系統啟項:
cat /boot/grub2/grub.cfg |grep menuentry
發現新版本內核設置新版本內核默認啟:
grub2-set-default 'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
查看默認啟系統版本grub2-editenv list:
顯示'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
8 reboot重啟再查看 uname -r
-
『貳』 centos7 gcc編譯器對c11標準的支持
gcc-std=c11main.c-omain
前提是你的gcc版本得夠新, 支持 c11才可以.
『叄』 centos 7如何獲取完整內核源碼
1. 下載內核
內核官網獲得了(不讓加鏈接,搜索linux內核官網 )
tar.xz 是完整的內核包
pgp 是.tar.sign後綴的文件,用於校驗類似於MD5
patch 是補丁包
2. 解壓文件,現在一般採用 .tar.xz 的壓縮格式(壓縮率最高,但是壓縮時間較長)。
/usr/src 一般而言、我們製做linux內核的時候源碼一般放在這個路徑下,
可以使用 # tar -Jxvf linux-3.13.2.tar.xz -C /usr/src/ 把文件解壓到 /usr/src/ 中(在root用戶下才有效)
3. 如果是第一次編譯內核,並沒有上次的殘留文件可以可以跳過
# make mrproper
這個步驟
注意:make clean 刪除大多數的編譯生成文件, 但是會保留內核的配置文件.config, 還有足夠的編譯支持來建立擴展模塊
make mrproper 刪除所有的編譯生成文件, 還有內核配置文件, 再加上各種備份文件
make distclean mrproper刪除的文件, 加上編輯備份文件和一些補丁文件。
4. 接下來是 make config 。
具體參照 《make config 的幾種類型》
一般採用 # make menuconfig 的方式
此處需要兩個包,選擇最簡單的yum安裝
# yum -y install gcc 和
# yum install ncurses ncurses-devel。
具體選項的作用參考 《Linux-3.10-x86_64 內核配置選項簡介 》
對新的內核功能選擇,並生成一個 .config 的文件
5. 編譯內核
# make 和 # make moles_install (此處命令必須進入/usr/src/linux-x-x-x/才有效,否則會報錯)
注意:2.6內核作了優化,不必顯示的執行make dep 和make bzImage,只需要直接執行
make 就行,系統會自動完成make dep 和 make bzImage 所做的工作。
6. 安裝內核
# make install
7. 修改默認啟動的內核(把游標處的default值改成0,就為默認啟動,編譯成功後默認為1)
# vim /boot/grub/grub.conf
用 cat /boot/grub/grub.conf 驗證並測試
# cat /boot/grub/grub.conf
看是否添加成功
8. 重啟機器,查看效果
默認的內核就是剛才編譯成功的。。。
『肆』 Linux操作系統中默認安裝的C語言編譯系統是
Linux操作系統中默認安裝的C語言編譯系統是GCC(GNU Compiler Collection),是Linux下最常用的C語言編譯器,是GNU項目中符合ANSI,C標準的編譯系統,能夠編譯用C、Object C等語言編寫的程序。
同時它可以通過不同的前端模塊來支持各種語言,如Java、Fortran、Pascal、Mola,3和Ada等。
C語言的標准
1.1 K,RC
1973年,Dennis M Ritchie設計和實現了C語言,從那以後使用者逐漸增加。
1978年,Kernighan 和 Ritchie 合著了《The C Programming Language》,這本書定義的C語言被稱為 K,RC 。
1.2 標准 C
隨著C語言使用日益廣泛,出現了許多新問題,人們迫切希望對C語言進行標准化。
第一個標准:C89
1983年,ANSI成立了一個委員會X3J11,對C語言進行標准化。
1989年,ANSI 批准了第一個C語言標准 X3,159-1989,並於1990年公布,被稱為 ANSIC、C89 或 C90。
1990年,這個標准又被批准為ISO標准:ISO,IEC 9899:1990 。
ANSIC標准被ISO採納,並且ISO發布的修訂版也被ANSI採納,因此ANSI標准和ISO標准實際上沒有技術區別。這些名稱的含義是相同的:ANSI C、ISO C、標准C。
1994年和1996年,ISO發布了兩個技術更正,更正了1990ISOC標准中的錯誤。
第二個標准:C94
1995年,ISO發布了1990ISOC標準的一個補充,稱為AMD1。擴充後的標准被稱為C94或C95。
第三個標准:C99
1999年,ISO發布了一個新版本的ISOC標准:ISO,IEC9899:1999,稱為C99。
2001年、2004年和2007年,ISO發布了三個技術更正,更正了1999ISOC標准中的錯誤。
第四個標准:C11
2011年,ISO發布了一個新版本的ISOC標准:ISO,IEC9899:2011,稱為C11。C11 是 C語言的最新標准。
1.3 GNUC
1984年,Richard Stallman 發起了GNU計劃,它的目標是開發一個完整且自由的Unix-like操作系統(GNU系統)。
GNU系統是一個完整的操作系統,包括操作系統內核和各種工具軟體。各種GNU系統的變種(例如Redhat、Ubuntu等)已經被廣泛使用,它們使用的操作系統內核都是Linux。雖然這些系統經常被稱為Linux,但准確地說,它們是GNU/Linux系統。
GNU在編寫Linux時擴展了標准C,稱為GNUC。
GNU C的擴展詳見:Extensions to the C Language Family
GNU C也稱為Linux C,一般用於Linux上的開發,而標准C可以跨平台。
GNU C使用的編譯器是GCC。