linux內核錯誤
嘗試一下不要用中文路徑。
② LINUX 升級內核時報錯
你是不是用發行版改動過的源代碼編譯的?如果是從 kernel.org 里下載的內核,應該不會出現這種情況。
我以前是用的紅帽的內核。這個裡面的選項依賴性很強,只有一點一點的試了。我的做法是 先用原生的 .config 文件編譯,看能不能通過,再每次少改動一兩個選項,試試看能不能編譯。有一個能加速編譯的工具 ccache 你右以考慮下。
③ Linux內核編譯出錯。
你的編譯環境有問題。
as 提示不支持某個參數,而且從上面看你應該在編譯 arm 架構的內核,但後面的提示是 as 命令,這種名字的命令(沒有架構前綴)應該是本地編譯器。我想你不太可能在 arm 上本地編譯內核吧(實際上確實可以,而且我以前玩 arm 也都傾向於 arm 上本地編譯,就是速度慢,需要用 distcc 加速,但兼容好)?
貌似是 -EL 參數 ix86 架構不支持。所以不太可能這步就是應該用本地 as 編譯。
如果不是 arm 本地編譯,那有可能這步用錯了 as 這個匯編器命令。你的台式計算機 as 是 x86 或者 amd64 的,肯定不支持 arm 特有的編譯參數和代碼。
你看看你的編譯文章吧。可能有錯,不符合現在內核編譯的規范了。或者 GCC 版本太老或者太新不支持這個參數。不排除你的交叉編譯環境有問題。
別聽那匿名胡扯的,內核源代碼根本沒有 configure 。
④ 編譯在X86平台下運行的linux內核出錯 make: Warning: File `.config' has modification time 6.5e+02 s in
出現這種錯誤有可能是因為工程在別的電腦上一直到當前的電腦上,進行編譯出現的。主要是因為兩個環境的時間不對應。
原因:window的時間和虛擬機上的時間有差異。
解決:修改虛擬機上的時間。
指令1:sudo date -s 02/19/2021 //月、日、年
指令2:sudo date -s 14:46:00 //時、分、秒
⑤ linux 內核錯誤
在centOS上利用makebzImage編譯內核出錯,config文件用的是centos自帶的/boot/config-2.6.32-358.el6.i686文件,無論是編譯2.6.32.67,還是3.2.71版本,都出現如下的錯誤:make[4]:***沒有規則可以創建「/home/dadi/test/linux-3.2.71/usr/include/lin
⑥ 內核錯誤的Linux kernel oops
在Linux上,oops即Linux內核的行為不正確,並產生了一份相關的錯誤日誌。許多類型的oops會導致內核錯誤,即使系統立即停止工作,但部分oops也允許繼續操作,作為與穩定性的妥協。這個概念只代表一個簡單的錯誤。
當內核檢測到問題時,它會列印一個oops信息然後殺死全部相關進程。oops信息可以幫助Linux內核工程師調試,檢測oops出現的條件,並修復導致oops的程序錯誤。
Linux官方內核文檔中提到的oops信息被放在內核源代碼Documentation/oops-tracing.txt中。通常klogd是用來將oops信息從內核緩存中提取出來的,然而,在某些系統上,例如最近的Debian發行版中,rsyslogd代替了klogd,因此,缺少klogd進程並不能說明log文件中缺少oops信息的原因。
若系統遇到了oops,一些內部資源可能不再可用。即使系統看起來工作正常,非預期的副作用可能導致活動進程被終止。內核oops常常導致內核錯誤,若系統試圖使用被禁用的資源。
⑦ linux內核編譯錯誤 本人菜鳥 請高手指教
配置單中對於控制台的配置有誤,添加了多餘的配置導致的。
解決方法:通過make menuconfig 進入配置界面,在Device Drivers->Graphics Support->Console display driver support中去掉VGA text console,保存設置後再編譯就可以了
⑧ Linux 0.11內核編譯錯誤記錄
現象1: 提示gas gld 比識別
措施: gnu編譯器發展到後來,越來越流行,更多使用別名為 as ld gcc等.
現象2: 提示位元組對齊需要是 2的倍數
措施: 具體解決方法: 利用命令 sed -i 's/align 2/align 4/g' filename 替換align 2 為 align 4(align 3 替換為 align 8)
sed -i 's/align 2/align 4/g' boot/head.s
sed -i 's/align 3/align 8/g' boot/head.s
現象3: -fcombine-regs -mstring-insns選項不識別
措施: 此兩個選項已經過時,直接去掉即可
現象4: warning 特別多
措施: 將-Wall 替換為 -w
現象5: __stack_chk_fail 未定義
措施: 去網上搜了一下,在Makefile中的$(CFLAGS)後面加上-fno-stack-protector,即不需要棧保護
現象6: main.c 中_syscall0重復定義
措施: main.c static inline _syscall0(int, fork) 去掉static即可
現象7: 提示內嵌匯編不符合語法限制
措施: 類似的問題在後面編譯中出現好多,C內嵌匯編的格式 asm (匯編語句:輸入寄存器:輸出寄存器:可能被修改的寄存器),最新的GCC規定 輸入或輸出寄存器不能出現在可能被修改的寄存器中,目前看到網上的方法是把所有類似問題的可能被修改的寄存器全部刪掉 解決方案:find -type f -exec sed -i 's/:"w{2}"(,"w{2}") )/:) /g' {} ; 其中's/:"w{2}"(,"w{2}") /:/g'
現象8: 在 control.c 中清楚定義了 static unsigned char attr = 0x70 ,而在鏈接 control.o 時,卻爆出 attr未定義。
措施: 用 nm -C control.o 查看其符號,發現attr確實處於未定義狀態。故單獨編譯一個小程序定義靜態變數,查看其 .o 文件中,發現靜態變數定義正常。故考慮為編譯選項差異導致,最終發現因為 -O 編譯優化選項導致,目前處理方式是去掉該選項。
現象9: build.c:(.text+0xde): undefined reference to `MAJOR'
措施: 通過分析編譯列印信息,發現編譯時沒有加入頭文件路徑 -Iinclude
現象10: fs/fs.o: In function check_disk_change':(.text+0x1b2f): undefined reference to invalidate_buffers'
措施: 查找發現此函數定義在buffer.c 中,且為內聯函數, 故嘗試將其更改為普通函數, 然後編譯通過.
現象11: 編譯 build.c 時報錯:/usr/include/i386-linux -gnu/bits/stdio2.h:57:8: error: unknown type name 『__gnuc_va_list』
措施: 分析發現時此系列錯誤均由 -Iinclude 選項導致, 而該選項在 想像9 中加入, 故考慮去掉該選項, 直接在build.c 中加入 MAJOR 宏定義.