希望你明白內核的作用(提供基礎系統函數、介面和設備驅動),和啟動後系統如何載入內核(一般是通過grub)之後再考慮自己編譯內核。現在的電腦,自己編譯內核並不能帶來多少性能的優化。只是一個學習的過程而已。如果你是為了所謂優化,建議用你的時間去做其它更有意義的事情。如果是學習,則可以試試自己編譯一下。
編譯失敗,找出原因,調整之後,重新編譯即可。不會有什麼嚴重後果,當然更不會導致正在使用的系統崩潰。
但是如果編譯失敗,*不要*強行安裝,並重新啟動,因為編譯失敗所產生的內核(如果有)是不能成功啟動的。
整個編譯過程都不會影響當前系統。是否影響或替換舊的內核,試你的發行版而定。嚴重推薦不要覆蓋/刪除原來的內核,讓新舊內核都在grub的menu裡面保留,這樣萬一新內核啟動失敗,可以很方便地使用舊內核來啟動。
如果是第一次編譯內核,建議身邊有高人指點,或者在虛擬機上操作。這樣會比較順利和放心。
❷ 鐢佃剳涓閿欒鎸囦護鏄浠涔堟剰鎬
閿欒鎸囦護鏄鎸囩數鑴戝湪鎵ц岀▼搴忔垨鎿嶄綔鏃訛紝鐢變簬鏌愮嶅師鍥犳棤娉曟g『鎵ц屾垨鐞嗚В鐨勬寚浠ゃ傝繖浜涢敊璇鎸囦護鍙鑳戒細瀵艱嚧紼嬪簭宕╂簝銆佹暟鎹涓㈠け鎴栫郴緇熶笉紼沖畾絳夐棶棰樸
閿欒鎸囦護閫氬父鏄鐢變互涓嬪嚑涓鍘熷洜寮曡搗鐨勶細
1. 璇娉曢敊璇錛氳繖鏄鏈甯歌佺殑閿欒鎸囦護綾誨瀷涔嬩竴銆傚傛灉紼嬪簭鍛樺湪緙栧啓浠g爜鏃朵笉灝忓績鐘浜嗚娉曢敊璇錛屾瘮濡傛嫾鍐欓敊璇銆佹嫭鍙蜂笉鍖歸厤絳夛紝緙栬瘧鍣ㄥ氨鏃犳硶姝g『瑙f瀽榪欎簺鎸囦護錛屽艱嚧緙栬瘧澶辮觸鎴栫▼搴忚繍琛屾椂宕╂簝銆
2. 閫昏緫閿欒錛氬嵆浣挎寚浠ょ殑璇娉曟槸姝g『鐨勶紝浣嗗傛灉瀹冧滑鐨勯昏緫涓嶆g『錛屼篃鍙鑳藉艱嚧紼嬪簭鍑虹幇閿欒銆備緥濡傦紝濡傛灉紼嬪簭涓鐨勬煇涓寰鐜娌℃湁姝g『鐨勭粓姝㈡潯浠訛紝閭d箞瀹冨彲鑳戒細鏃犻檺寰鐜涓嬪幓錛屽艱嚧紼嬪簭宕╂簝鎴栧崰鐢ㄨ繃澶氳祫婧愩
3. 紜浠墮棶棰橈細鏈夋椂鍊欙紝閿欒鎸囦護鍙鑳芥槸鐢變簬紜浠墮棶棰樺紩璧風殑銆備緥濡傦紝濡傛灉鐢佃剳鐨勫唴瀛樻垨澶勭悊鍣ㄥ嚭鐜版晠闅滐紝閭d箞瀹冧滑鍙鑳芥棤娉曟g『鎵ц屾寚浠ゃ傛ゅ栵紝濡傛灉鐢佃剳鐨勭數婧愪笉紼沖畾錛屼篃鍙鑳藉艱嚧鎸囦護鎵ц屽嚭閿欍
涓轟簡閬垮厤閿欒鎸囦護鐨勫彂鐢燂紝紼嬪簭鍛橀渶瑕佷粩緇嗘鏌ヤ唬鐮侊紝紜淇濊娉曞拰閫昏緫閮芥槸姝g『鐨勩傚悓鏃訛紝浠栦滑榪橀渶瑕佸圭▼搴忚繘琛屽厖鍒嗙殑嫻嬭瘯錛屼互渚垮彂鐜板苟淇澶嶅彲鑳藉瓨鍦ㄧ殑閿欒銆傛ゅ栵紝淇濇寔鐢佃剳紜浠剁殑鑹濂界姸鎬佷篃闈炲父閲嶈侊紝榪欏彲浠ョ『淇濇寚浠よ兘澶熸g『鎵ц屻
涓句釜渚嬪瓙錛屽亣璁句竴涓紼嬪簭鍛樻e湪緙栧啓涓涓璁$畻紼嬪簭錛屼粬闇瑕佽╃▼搴忚誨彇涓涓鏁板瓧騫跺皢鍏朵箻浠2銆傚傛灉紼嬪簭鍛樹笉灝忓績灝嗕箻娉曟寚浠ゅ啓鎴愪簡鍔犳硶鎸囦護錛岄偅涔堢▼搴忓氨浼氭墽琛岄敊璇鐨勬搷浣滐紝瀵艱嚧璁$畻緇撴灉涓嶆g『銆傝繖灝辨槸涓涓鍏稿瀷鐨勭敱浜庨昏緫閿欒瀵艱嚧鐨勯敊璇鎸囦護銆備負浜嗛伩鍏嶈繖縐嶆儏鍐電殑鍙戠敓錛岀▼搴忓憳闇瑕佷粩緇嗘鏌ヤ唬鐮侊紝紜淇濇瘡涓鎸囦護閮芥槸姝g『鐨勩傚悓鏃訛紝浠栦滑榪橀渶瑕佸圭▼搴忚繘琛屾祴璇曪紝浠ヤ究鍙戠幇騫朵慨澶嶅彲鑳藉瓨鍦ㄧ殑閿欒銆
❸ c++中什麼是語法錯誤,什麼是編譯錯誤
程序的錯誤主要分成三種:
編譯鏈接錯誤;
編譯鏈接錯誤又分成編譯錯和鏈接錯。
編譯錯就是普通意義上的語法錯,編譯器進行語法檢查不通過,也就是程序違背了計算機語言的語法,例如:括弧不匹配、變數名拼寫錯誤、用保留字定義變數名等;
鏈接錯是指程序通過了語法檢查,但是無法生成可執行文件,最常見的是鏈接找不到lib庫。初學者有時寫了函數的聲明,但是缺少函數的定義,此時就會出現鏈接錯。
運行錯誤;
運行錯是程序可以執行,但是在執行過程中發生異常,提前退出程序。最常見的是指針越界,打開文件失敗繼續讀取文件,總而言之是讓計算機執行一些不能執行的語句。
邏輯錯誤
邏輯錯是程序也能運行,就是結果不對,主要原因有:程序演算法本身錯誤,程序和演算法不同義等。
例如:新手經常將判斷相等的==寫成=賦值,往往就會導致邏輯錯。
你的BD(int,int); 是一句函數調用?還是一句函數聲明?
❹ 能解釋下編譯失敗的原因嗎
編譯失敗的原因有很多種。其中主要有以下一些類型:
(1)、用戶編寫的源程序中有語法錯誤。例如:未定義某一個變數就進行引用。這一類錯誤是最簡單的,也是編譯器最容易檢查出來的,所以會產生對源程序的編譯失敗;
(2)、用戶編寫的源程序中有未對變數進行初始化就進行引用,也會導致程序運行錯誤。例如:用戶雖然定義了一個指向某一個內存地址的指針變數,但是在使用前卻未對它進行初始化,並進行任何判斷,就往該指針指向的內存地址賦予了一個數值,這種情況在語法上編譯器是檢查不出來的,但是程序一旦運行起來,肯定就會出現錯誤了。在 WINDOWS 系統下一般是:指向XXXX的內存不能夠為 Read (或者為 Write),要是在 UNIX/Linux 系統下就會發生 Core Dumped。
(3)、數組越界。這類錯誤也是編譯器檢查不出來的,但是一旦程序運行起來,程序的運行結果可能就是一個隨機的結果。而不是用戶需要得到的結果。
所以從編譯的實質上說,以上情況都應該屬於編譯失敗的類型。因為編譯器並無法阻止這些錯誤的發生,而是讓程序在運行時發生了各種各樣的意想不到的運行結果。
❺ C語言編程時出現的那個expected怎麼理解啊
C語言編程時編譯失敗後提示"expected"說明代碼缺乏必要內容導致語法錯誤。
expected表示預期,期望。在C語言編譯失敗後的提示信息中出現時表示編譯器無法通過編譯,且根據其錯誤給出合理的建議。
此處可以發現編譯器提示在花括弧 '{' 前缺乏某些符號,可以幫助我們修改源代碼,但需要注意的是編譯器的判斷可能出錯,該提示信息僅代表源代碼中存在錯誤培源改即可能原因!目前暫時無法准確標注出出錯位置。
C語言程序開發流程如下:
擴展裂高資料
C語配判言出現的錯誤大致上可以分為兩種,一種是語法錯誤,另一種是邏輯錯誤。
大部分語法錯誤將無法通過編譯器編譯,編譯器會報錯並給出提示,設計程序時可以根據編譯器給出的提示檢查源代碼是否符合C語言的標准。
需要注意的是,不同版本的編譯器支持的標准可能存在差異,特別在移植代碼的過程中需要注意。
邏輯錯誤相對較難排除,主要是程序設計時由於邏輯不夠嚴謹導致的程序運行錯誤或無法正常運行。排除邏輯錯誤需要進行調試,檢查程序運行過程數據的變化和堆棧的變化,直到發現問題並解決問題。