2.6.35內核編譯:
AS arch/x86/kernel/entry_64.o
/tmp/ccINj1Ii.s: Assembler messages:/tmp/ccINj1Ii.s: Error: .size expression for do_hypervisor_callback does not evaluate to a constant
make[2]: *** [arch/x86/kernel/entry_64.o] 錯誤 1
make[1]: *** [arch/x86/kernel] 錯誤 2
make: *** [arch/x86] 錯誤 2
論壇,我的解決方式是:END(do_hypervisor_callback)改爲END(xen_do_hypervisor_callback)
CC arch/x86/vdso/vgetcpu.o
CC arch/x86/vdso/vvar.o
VDSO arch/x86/vdso/vdso.so.dbg
gcc: 錯誤: elf_x86_64:沒有那個文件或目錄
make[2]: *** [arch/x86/vdso/vdso.so.dbg] 錯誤 1
make[1]: *** [arch/x86/vdso] 錯誤 2
make: *** [arch/x86] 錯誤 2
真沒辦法,可能是我想用X86_64的gcc編譯出i386的執行文件的出錯,然後就arch/x86/vdso/Makefile裏面-m elf_x86_64 -Wl換成-m64 -Wl,-m elf_i386 -Wl換成-m32 -Wl
在寫一寫編譯kernel的步驟:
make dep ---- 建立文件依賴關係
make localmodconfig ----本人覺得執行這步後就很省事啦
make menuconfig
make (bzImage)
make modules_install
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.35
cp System.map /boot/System.map-2.6.35
cp .config /boot/config-2.6.35
cd /boot
mkinitramfs -o initrd.img-2.6.35 2.6.35 ----(這裏的名字可在Makefile配置)
depmod -a
update-grub ----更新GRUB
詳細一點的講解見鳥哥的Linux私房菜部分。