设为首页 加入收藏

TOP

用icc编译Linux内核完美教程[图文]
2014-11-24 01:34:51 来源: 作者: 【 】 浏览:1
Tags:icc 编译 Linux 内核 完美 教程 图文

本文将介绍用icc(Intel C++ Compiler)版本 10.1.x 来编译Linux的内核(支持2.6.22以上的版本)
2.6.23以上包含2.6.23的内核它的解压和引导内核代码改变了如果用icc去直接编译内核,将会造成部分代码无法用icc编译,或者编译出来的代码无法正常引导内核,所有本文的方法是用gcc编译引导部分的代码,而其它部分的代码交由icc编译.


=========>>>>>>>作者 Power_By_RTL 转载请注明作者<<<<<<<<<<<<<<====
=========>>>>>>> 本文 以 BSD协议 发佈 <<<<<<<<<<<================


下载内核代码并解包.
修改 include/linux/compiler-intel.h
加一行 #undef __compiler_offsetof
即 echo "#undef __compiler_offsetof" >> include/linux/compiler-intel.h

否则就出现

compilation aborted for kernel/pid.c (code 2)
make[1]: *** [kernel/pid.o] Error 2
make: *** [kernel] Error 2

修改代码目录的 Makefile

--start-group $(vmlinux-main) \

加入

--start-group $(vmlinux-main) /opt/intel/cc/10.1.021/lib/libirc_s.a --end-group \
修改 ./scripts/Makefile.build
quiet_cmd_link_multi-y = LD $@
cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis)
2.6.23以前是

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.021/lib/libirc_s.a 即

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.021/lib/libirc_s.a




/opt/intel/cc/10.1.021/lib/libirc_s.a 是icc的一个静态库在编译内核的过程中如果出现
undefined reference to '__intel_new_proc_init' 之类的把 libirc_s.a 联接进去即可,如果你用10.1.018 版的在 /opt/intel/cc/10.1.018/lib/libirc_s.a


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Ubuntu手动安装JDK 下一篇Tomcat在Linux下的启动与停止Shell

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: