2009年04月05日 星期日 08:35
LinuxDNA这个项目(linuxdna.com),使用ICC编译内核,听说性能提高40%,不知是不是真的? 我在Fedora10(gcc4.3.2(Red Hat 4.3.2-7))上成功安装ICC(10.1.015),一个朋友提供了一个Kernel-2.6.18-53.11AXS3-icc10.1.015.patch的补丁,但我在http://kernel.org/pub/linux/kernel/v2.6/ 目录下没有找到 linux-2.6.18-53 版本内核,最后下载了linux-2.6.18。我分别对2.6.18和2.6.27.13进行了测试。 我把补丁分别打进不同版本,补丁一些内容被忽略了。 在 2.6.18 中 不存在 arch/i386/boot/compressed/relocs.c, 在 2.6.27.13 中还不存在其他几个文件。 两个版本编译均出现很多语法警告,都出现相同的编译错误,并中止。 IPO: WARNING: File scope asm disables -ipo arch/x86/kernel/acpi/realmode/wakemain.o: In function `main': wakemain.c:(.text+0x14f): undefined reference to `__intel_new_proc_init' make[3]: *** [arch/x86/kernel/acpi/realmode/wakeup.elf] Error 1 make[2]: *** [arch/x86/kernel/acpi/realmode/wakeup.bin] Error 2 make[1]: *** [arch/x86/kernel/acpi] Error 2 make: *** [arch/x86/kernel] Error 2 -------------------------- 于是我在网上查找到一篇指导ICC编译内核的博客(http://blog.sina.com.cn/s/blog_3e68888d0100bxe7.html) 1、在(include/linux/compiler-intel.h)最后一行添加 #undef __compiler_offsetof 2、修改Makefile中的 --start-group $(vmlinux-main) 为: --start-group $(vmlinux-main) /opt/intel/cc/10.1.022/lib/libirc_s.a 3、把(./scripts/Makefile.build)中的 quiet_cmd_link_multi-y = LD $@ cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis) 修改成: quiet_cmd_link_multi-y = LD $@ cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis) /opt/intel/cc/10.1.022/lib/libirc_s.a 但还是编译出错: compilation aborted for kernel/bounds.c (code 2) make[1]: *** [kernel/bounds.s] Error 2 make: *** [prepare0] Error 2 -------------------------- 最后我到linux-dna官方网站下载了打过补丁的内核源码, $ make oldconfig $ make HOSTCC=fcc CC=fcc Ar=xiar LD=xild 这里的fcc就是和icc版本对应的包装脚本 icc: command line error: invalid argument for option '-m' make[1]: *** [arch/i386/kernel/asm-offsets.s] Error 1 make: *** [prepare0] Error 2 还是出错 :( -------------------------- 我估计对内核代码修改的问题,我在linuxdna网站并没有找到相关补丁的下载。 这里有没有人尝试ICC编译过内核? -- Jianjun Kong http://kongove.cn/
Zeuux © 2024
京ICP备05028076号