编译内核 linux-2.6.29 版本时
最后 链接错误 如下(通过修改 make menuconfig 方法对策)
-
ERROR: "__bad_udelay" [sound/pci/ali5451/snd-ali5451.ko] #例1
-
ERROR: "__bad_udelay" [drivers/scsi/atp870u.ko] #例2
-
ERROR: "del_mtd_partitions" [drivers/mtd/onenand/generic.ko]
-
ERROR: "__bad_udelay" [drivers/isdn/hisax/hisax.ko]
-
ERROR: "__bad_udelay" [drivers/atm/he.ko] #例3
-
make[1]: *** [__modpost] 错误 1
-
make: *** [modules] 错误 2
上记错误发生后,网上各式各样的解决方法,
有说,把其 o文件 改为ko文件的...
有说,通过 make menuconfig,配置后,使其不编译的(build in)...
有说,改写 Makefile的...
有说,改写 .config的...
等等
下记,memo一下,通过上记Error信息,如何在menuconfig中,使其不编译的方法。(举例说明)
下记两类文件的区别
linux-2.6.29/.config →make menuconfig配置后的整体配置文件的最终结果
linux-2.6.29/各子目录/Kconfig →make menuconfig的配置界面样式(文字/项目)的配置属性文件
#例1#例1#例1#例1#例1#例1#例1#例1:
-
ERROR: "__bad_udelay" [sound/pci/ali5451/snd-ali5451.ko] #例1
sound/pci/ 路径下 Kconfig文件中,搜索 snd-ali5451 关键字,如下:
说明:如果不想编译 snd-ali5451 的话,就将 menuconfig的 "ALi M5451 PCI Audio Controller" 项目中,设为 空。
-
menuconfig SND_PCI
-
bool "PCI sound devices"
-
depends on PCI
-
default y
-
help
-
Support for sound devices connected via the PCI bus.
-
-
-
if SND_PCI
-
-
...
-
...
-
...
-
...
-
-
config SND_ALI5451
-
tristate "ALi M5451 PCI Audio Controller"
-
select SND_MPU401_UART
-
select SND_AC97_CODEC
-
help
-
Say Y here to include support for the integrated AC97 sound
-
device on motherboards using the ALi M5451 Audio Controller
-
(M1535/M1535D/M1535+/M1535D+ south bridges). Newer chipsets
-
use the "Intel/SiS/nVidia/AMD/ALi AC97 Controller" driver.
-
-
To compile this driver as a module, choose M here: the module
-
will be called snd-ali5451.
通过上记 Kconfig脚本知道 下记递进关系
PCI sound devices --->
ALi M5451 PCI Audio Controller
再查找上级目录中的 Kconfig ,找其 父级项目名称,依次类推,最终确定 其选项的 树形递进关系,如下
Device Drivers --->
Sound card support --->
Advanced Linux Sound Architecture --->
PCI sound devices --->
ALi M5451 PCI Audio Controller 将其设置为 [ ] excluded 即可(如下图)
)
#例2#例2#例2#例2#例2#例2#例2#例2:
点击(此处)折叠或打开
-
ERROR: "__bad_udelay" [drivers/scsi/atp870u.ko] #例2
在下记 Kconfig中查找 atp870u 关键字
drivers/scsi
/Kconfig
drivers/
Kconfig
menuconfig 的menu递进关系 查找关键字 为 "menu" 以及 "menuconfig"
其递进关系 如下
Device Drivers --->
SCSI device support --->
SCSI low-level drivers --->
ACARD SCSI support
将其设置为 [ ] excluded 即可
#例3#例3#例3#例3#例3#例3#例3#例3:
-
ERROR: "__bad_udelay" [drivers/atm/he.ko] #例3
he关键字 太简单了,所以最好搜索 atm关键字
-
config ATM_HE
-
tristate "ForeRunner HE Series"
-
depends on PCI
-
help
-
This is a driver for the Marconi ForeRunner HE-series ATM adapter
-
cards. It simultaneously supports the 155 and 622 versions.
-
-
config ATM_HE_USE_SUNI
-
bool "Use S/UNI PHY driver"
-
depends on ATM_HE
-
help
-
Support for the S/UNI-Ultra and S/UNI-622 found in the ForeRunner
-
HE cards. This driver provides carrier detection some statistics.
相关 Kconfig文件 如下:
drivers/atm/Kconfig
drivers/net/Kconfig
drivers/Kconfig
(注 :
drivers/net/Kconfig 中包含了 drivers/atm/Kconfig →source "drivers/atm/Kconfig"
drivers/Kconfig 中包含了 drivers/net/Kconfig →source "drivers/net/Kconfig"
)
↑ 可用grep命令 查找 上记 包含关系 如下:
-
linux-2.6.29/drivers$ grep -rn "drivers/atm/Kconfig" *
-
-
inux-2.6.29/drivers$ grep -rn "drivers/net/Kconfig" *
递进关系 如下:
Device Driverss --->
Network device supports --->
ATM driverss --->
ForeRunner HE Series
将其设置为 [ ] excluded 即可
最后,比较 最初的 .config 文件 和 make menuconfig配置修改后的 .config 文件,之间的差异。
就明白了。
另,如果 无法清晰区分 子项目 ,就把其 父项 关了。(这样 无法清晰区分的 子项 就都被关掉) -……-!
阅读(1757) | 评论(0) | 转发(0) |