Welcome 微信登录

首页 / 操作系统 / Linux / Fedora 8 环境 2.6内核编译步骤

第一次编译2.6的内核,十分不顺手,老是有问题。(Fedora 8,内核2.6.25 )开始的时候我用的是2.6.26的内核在root目录下解压,在make menuconfig之后没有位子可以选择arm的,在网上查了后输入命令make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig,但这也有问题,因为你在menuconfig的选项都没有被保存下来,它还是要让你一个一个的慢慢的选择,这太麻烦了,想办法。在2.6.26的目录下修改Makefile,主要是以下2项:ARCH=armCROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux(/usr/local/arm/3.4.1/bin/arm-linux是你编译器的地址)这样修改后直接make menuconfig就行了。可是make以后马上就出问题了如下:include/asm/page.h:111:2: #error Unknown user operations modelmake[1]: *** [arch/arm/kernel/asm-offsets.s] 错误 1make: *** [prepare0] 错误 2make[1]: *** [arch/arm/kernel/asm-offsets.s] 错误 1make: *** [prepare0] 错误 2这个问题我搞了3天也没搞好。后来把内核放在/usr/src目录下重新编译,没有arch/arm/kernel/asm-offsets.s这个问题了,可是又有新的问题了:drivers/gpio/gpiolib.c: In function `gpiolib_dbg_show":drivers/gpio/gpiolib.c:1060: error: implicit declaration of function `gpio_to_irq"make[2]: *** [drivers/gpio/gpiolib.o] 错误 1make[1]: *** [drivers/gpio] 错误 2make: *** [drivers] 错误 2我到drivers/gpio/目录下修改makefile把gpiolib.c给屏蔽了。但是新的问题又来了:scripts/kconfig/mconf arch/arm/Kconfig## using defaults found in /boot/config-2.6.25.6-27.fc8#/boot/config-2.6.25.6-27.fc8:1622:warning: symbol value "m" invalid for IWL4965/boot/config-2.6.25.6-27.fc8:1769:warning: symbol value "m" invalid for ISDNYour display is too small to run Menuconfig!t must be at least 19 lines by 80 columns.make[1]: *** [menuconfig] 错误 1make: *** [menuconfig] 错误 2没办法我换了个版本,2.6.25重新来过,可在make之后问题又来了:include/asm/glue.h:119:2: #error Unknown data abort handler typeIn file included from include/linux/mm_types.h:13,from include/linux/sched.h:61,from arch/arm/kernel/asm-offsets.c:13:include/asm/page.h:103:2: #error Unknown user operations modelIn file included from include/asm/semaphore.h:13,from include/linux/sched.h:64,from arch/arm/kernel/asm-offsets.c:13:include/asm/locks.h:15:5: warning: "__LINUX_ARM_ARCH__" is not definedmake[1]: *** [arch/arm/kernel/asm-offsets.s] 错误 1make: *** [prepare0] 错误 2换版本2.6.27,在make之后:arch/arm/plat-s3c24xx/gpiolib.c:254: undefined reference to `gpiochip_add"make: *** [.tmp_vmlinux1] 错误 1我把gpiolib给屏蔽了但还是出现错误:rivers/gpio/gpiolib.c: In function `gpiolib_dbg_show":drivers/gpio/gpiolib.c:1060: error: implicit declaration of function `gpio_to_irq"make[2]: *** [drivers/gpio/gpiolib.o] 错误 1make[1]: *** [drivers/gpio] 错误 2make: *** [drivers] 错误 2换版本,因为我个人感觉我用的这些版本里对arm的支持太多了,像我选的arm2410的支持就同时支持2440,2400等好几个。所以我用了2.6.15在make之后:drivers/media/radio/radio-maestro.c:294: warning: comparison is always true due to limited range of data typedrivers/media/radio/radio-maestro.c:294: warning: comparison is always true due to limited range of data typedrivers/media/radio/radio-maestro.c:297: warning: comparison is always true due to limited range of data typedrivers/media/radio/radio-maestro.c:297: warning: comparison is always true due to limited range of data typemake[3]: *** [drivers/media/radio/radio-maestro.o] 错误 1make[2]: *** [drivers/media/radio] 错误 2make[1]: *** [drivers/media] 错误 2make: *** [drivers] 错误 2老方法修改当前目录的makefile。在编译:make[3]: *** [drivers/video/console/vgacon.o] 错误 1make[2]: *** [drivers/video/console] 错误 2make[1]: *** [drivers/video] 错误 2make: *** [drivers] 错误 2在make menuconfig时Graphics support ->console display driver support->vga text console(不选这个)在编译:usr/local/arm/3.4.1/bin/arm-linux-ld: no machine record definedmake: *** [.tmp_vmlinux1] 错误 1在 google 查到的都是说arch/arm/kernel/vmlinux.lds的最后两行(如下),给注释起来,但是没说为什么ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined"后来自己到 arch/arm/kernel/vmlinux.lds 看注释才知道These must never be emptyIf you have to comment these two assert statements out, yourbinutils is too old (for other reasons as well)在编译通过。