一:
invalid option `abi=aapcs-linux'選項(xiàng)錯(cuò)誤
scripts/kconfig/conf -s arch/arm/Kconfig
CHK include/linux/version.h
SYMLINK include/asm-arm/arch -> include/asm-arm/arch-s3c2410
make[1]: `include/asm-arm/mach-types.h' is up to date.
CHK include/linux/utsrelease.h
CC arch/arm/kernel/asm-offsets.s
cc1: error: invalid option `abi=aapcs-linux'
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2
解決方法:
You're building an EABI kernel with an OABI compiler. You can either turn off the EABI option in your config file (Kernel Features->Use EABI),or, you can use an EABI toolchain such as the ARM/GNU Linux one from <http://www.codesourcery.com/gnu_toolchains/arm/download.html>.I recommend the latter, because then you can run Arjan's new images.
上述的關(guān)掉EABI選項(xiàng)可以通過測(cè)試
二:
drivers/video/console/vgacon.o:987:warning:comparison is always true due to limited range of data type
make[3]:***[drivers/video/console/vgacon.o] error 1
make[2]:***[drivers/video/console2] error 2
make[1]:***[drivers/video1] error 2
make:***[drivers] error 2
解決方法:
在make menuconfig 時(shí)選哪個(gè)設(shè)備驅(qū)動(dòng)的選項(xiàng)進(jìn)去在選Graphics support ->
console display driver support->
vga text console(不選這個(gè))
再編譯就行了!
三:`rtc_lock'未定義錯(cuò)誤(未完全解決)
方法:
drivers/built-in.o(.text+0x281e4):drivers/char/nvram.c:350: more undefined references to `rtc_lock' follow
查 找drivers/char/nvram.c有關(guān)的rtc_lock定義,發(fā)現(xiàn)2.6.21與以往的kernel不同,于是在包含文件中查找,在 include/linux/mc146818rtc.h中發(fā)現(xiàn)了rtc_lock的定義,但是有一個(gè)__KERNEL__的條件編譯選項(xiàng),去掉這個(gè)條件 編譯選項(xiàng),再make zImage,但是問題好像依然存在,繼續(xù)在drivers/char/nvram.c中增加這個(gè)定義spinlock_t rtc_lock;再編譯,發(fā)現(xiàn)編譯通過。
四:
make zImage和make xipImage
Kernel configured for XIP (CONFIG_XIP_KERNEL=y)
Only the xipImage target is available in this case
make[1]: *** [arch/arm/boot/zImage] Error 1
make: *** [zImage] Error 2
解決方法:
好象是make menuconfig的時(shí)候Boot options--->Kernel Execte-In-Place from ROM選項(xiàng)問題,去掉這個(gè)選項(xiàng)編譯通過(如果是make xopImage時(shí)則需要將這個(gè)選項(xiàng)選上),最終成功編譯了make zImage。
五:
出現(xiàn)make:***[.tmp_vmlinux1] Error 1這類錯(cuò)誤
解決方法:修改arch/arm/kernel/vmlinux.lds
[arm@localhost linux2.6.14]$
vi arch/arm/kernel/vmlinux.lds
將文件尾2條的ASSERT注釋掉(1439行)
/* ASSERT((__proc_info_end __
proc_info_begin), "missing CPU support") */
/* ASSERT((__arch_info_end __
arch_info_begin), "no machine record defined") */
然后重新make zImage即可
六:
如果大家遇到一下幾個(gè)問題可以參考本文:
a make menuconfig
1) /usr/bin/ld: cannot find -lncurses
解決辦法:
sudo apt-get install libncurses5-dev
2) Your display is too small to run Menuconfig!
解決辦法: 窗口最大化
b
/usr/local/arm/bin/arm-linux-ld:arch/arm/kernel/vmlinux.lds:782: parse error
make: *** [.tmp_vmlinux1] 錯(cuò)誤 1
ld鏈接時(shí)產(chǎn)生錯(cuò)誤
對(duì)應(yīng)行:
/home/kevin/ARMSystem/linux-2.6.12/arch/arm/kernel/vmlinux.lds
/* those must never be empty */
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
解決辦法: 注釋掉這兩行
Linux內(nèi)核編譯時(shí)常見錯(cuò)誤及解決方案
http://emb.sunplusedu.com/answer/2013/0514/1325.html
相信大家在進(jìn)行Linux內(nèi)核編譯時(shí)常會(huì)遇見這樣或那樣的錯(cuò)誤,下面筆者列羅列了關(guān)于Linux內(nèi)核編譯時(shí)最常見的一些錯(cuò)誤以及解決方案,大家不妨可以參考下。
1、若編譯內(nèi)核時(shí)總是出現(xiàn)同一個(gè)錯(cuò)誤,如下:
在make modules_install時(shí)最后幾行彈出錯(cuò)誤:
if [ -r System.map -a -x /sbin/depmod ]; then /sbin/depmod -ae -F System.map 2.6.12.2; fi
/bin/sh: line 1: 3357 已殺死 /sbin/depmod -ae -F System.map 2.6 .12.2
make: *** [_modinst_post] 錯(cuò)誤 137
如果繼續(xù)make install,重啟,是進(jìn)不去剛剛編譯安裝的那個(gè)內(nèi)核的,顯示內(nèi)核錯(cuò)誤。
分析:如果 System.map可讀 并且 /sbin/depmod可執(zhí)行;那么就執(zhí)行/sbin/depmod -ae -F System.map 2.6.20;結(jié)束
depmod(depend module)
功能說明:分析可載入模塊的相依性。
語 法:depmod [-adeisvV][-m <文件>][--help][模塊名稱]
補(bǔ)充說明:depmod可檢測(cè)模塊的相依性,供modprobe在安裝模塊時(shí)使用。
參 數(shù):
-a或--all 分析所有可用的模塊。
-d或debug 執(zhí)行排錯(cuò)模式。
-e 輸出無法參照的符號(hào)。
-i 不檢查符號(hào)表的版本。
-m<文件>或system-map<文件> 使用指定的符號(hào)表文件。
-s或--system-log 在系統(tǒng)記錄中記錄錯(cuò)誤。
-v或--verbose 執(zhí)行時(shí)顯示詳細(xì)的信息。
-V或--version 顯示版本信息。
--help 顯示幫助。
解決方法:make module_install之前你是否關(guān)閉了selinux,
該問題是selinux阻止寫/lib/modules/ <version> 目錄
2、若重啟系統(tǒng)后顯示:
Warning--SElinux relabel is required
Disabling security enforcement
Relabeling could take a very long time
depending on file system size
可以更改grub.conf 將selinux=0添加到如下位置
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ selinux=0 rhgb quiet
或者更改/etc/selinux/config,將SELINUX=Disabled,存盤就可以把 selinux 關(guān)閉了
3、修改selinux
在新版本中的Red Hat 和 Fedora 上,修改檔案/etc/sysconfig/selinux:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
把 SELINUX設(shè)定為disable, 下次啟動(dòng)系統(tǒng)后將會(huì)停止SElinux.
Linux核心參數(shù)(Kernel Parameter)
或者可以在核心參數(shù)后加上: selinux=0 (停止) 或 selinux=1 (開啟)參數(shù)
檔案/boot/grub/menu.lst
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet selinux=0
initrd /initrd-2.6.18-1.2798.fc6.img
檢查SELinux現(xiàn)時(shí)況態(tài)
要知到你現(xiàn)在是否使用 SELinux:
# getenforce
disabled
4、重啟后若出現(xiàn)Kernel panic:VFS: Unable to mount root fs on unknown-block(0,0)
從錯(cuò)誤信息上看,是沒有識(shí)別到硬盤。看來,我機(jī)器上的SATA硬盤必須在內(nèi)核中做相應(yīng)的配置才能識(shí)別。
仔細(xì)閱讀了內(nèi)核配置時(shí)的幫助信息,得知內(nèi)核支持兩種SATA驅(qū)動(dòng)程序:一種是libata,在SCSI子系統(tǒng)中,支持最新的SATA控制器;還有一種是 IDE驅(qū)動(dòng)程序中的SATA,主要是支持第一代的SATA控制器。我的機(jī)器應(yīng)該是比較新的,所以先按libata的方式來配置試試。
先看看我的SATA控制器是什么類型的?運(yùn)行l(wèi)spci,輸出如下:
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Con troller (rev 01)
就是SATA控制器的類型。
解決方法:在make menuconfig中設(shè)置以下選項(xiàng):
Device Driver
|---->SCSI device support
|---->SCSI disk support
|----->verbose SCSI error reporting (不是必須的,但可方便問題定位)
|----->SCSI low-level drivers
|---->Serial ATA (SATA) support
|---->intel PIIX/ICH SATA support
<*> RAM disk support 在 device drivers -> Block devices中
<*> Initial RAM disk (initrd) support 在 device drivers -> Block devices中
<*> Compressed ROM file system support (cramfs) 在file systems -> Miscellaneous filesystems中
5、若重啟之后出現(xiàn)網(wǎng)卡不識(shí)別,無法激活,出現(xiàn)via-rhine device eth0 does not seem to be present, delaying initialization
缺少VIA 驅(qū)動(dòng)
運(yùn)行 make menuconfig
在Networking support-->Networking device support --> Ethernet (10 or 100Mbit) 里找到 <M>"VIA Rhine RevB support"
6、若重啟后顯示如下:
reading all physical volumns, this may take a while…
no volumns group found!
unable to find volumns group "VolGroup00"
ERROR: /bin/lvm exited abnormal with value 5 (pid 335)
error 6 mounting ext3
ERROR OPENING /dev/console!!:2
error dup2ing fd of 0 to 0
error dup2ing fd of 1 to 1
error duping fd of 2 to 2
switchroot:mount failed:22
kernel panic - no syncing: attempted to kill init!
運(yùn)行make menuconfig時(shí)在 device drivers ->[*] Multiple devices driver support (RAID and LVM)
如果有以下選項(xiàng),也應(yīng)該啟用它們:<*> Logical volume manager (LVM) support