热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux内核编译静态库,用icc编译Linux内核完美教程[图文]

本文将介绍用icc(Intel?CCompiler)版本10.1.x来编译Linux的内核(支持2.6.22以上的版本)2.6.23以上包含2.6.23的内核它的解压和引导内核代码

本文将介绍用icc(Intel? C++ Compiler)版本 10.1.x 来编译Linux的内核(支持2.6.22以上的版本)

2.6.23以上包含2.6.23的内核它的解压和引导内核代码改变了如果用icc去直接编译内核,将会造成部分代码无法用icc编译,或者编译出来的代码无法正常引导内核,所有本文的方法是用gcc编译引导部分的代码,而其它部分的代码交由icc编译.

&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;>>>>>>>作者 Power_By_RTL 转载请注明作者<<<<<<<<<<<<<<&#61;&#61;&#61;&#61;

&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;>>>>>>>  本文 以 BSD协议 发佈 <<<<<<<<<<<&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;

下载内核代码并解包.

修改 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 &#61; LD $&#64;

cmd_link_multi-y &#61; $(LD) $(ld_flags) -r -o $&#64; $(link_multi_deps) $(cmd_secanalysis)

2.6.23以前是

quiet_cmd_link_multi-y &#61; LD $&#64;

cmd_link_multi-y &#61; $(LD) $(ld_flags) -r -o $&#64; $(link_multi_deps) $(cmd_secanalysis)

在后面加个 /opt/intel/cc/10.1.021/lib/libirc_s.a 即

quiet_cmd_link_multi-y &#61; LD $&#64;

cmd_link_multi-y &#61; $(LD) $(ld_flags) -r -o $&#64; $(link_multi_deps) $(cmd_secanalysis) /opt/intel/cc/10.1.021/lib/libirc_s.a

20772543098c830d07d95f5985754e30.png

/opt/intel/cc/10.1.021/lib/libirc_s.a 是icc的一个静态库在编译内核的过程中如果出现

undefined reference to &#39;__intel_new_proc_init&#39; 之类的把 libirc_s.a 联接进去即可&#xff0c;如果你用10.1.018 版的在 /opt/intel/cc/10.1.018/lib/libirc_s.a0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • GCC(GNU Compiler Collection)是GNU项目下的一款功能全面且高效的多平台编译工具,广泛应用于Linux操作系统中。本文将详细介绍GCC的特点及其基本使用方法。 ... [详细]
  • 正在学习操作系统开发,遇到一个内核在GRUB Legacy(0.97)中无法成功引导的问题。具体表现为输入内核命令后显示错误信息,尝试引导时GRUB挂起。 ... [详细]
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • Activity跳转动画 无缝衔接
    Activity跳转动画 无缝衔接 ... [详细]
  • 想把一组chara[4096]的数组拷贝到shortb[6][256]中,尝试过用循环移位的方式,还用中间变量shortc[2048]的方式。得出的结论:1.移位方式效率最低2. ... [详细]
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 本文介绍如何使用Java实现AC自动机(Aho-Corasick算法),以实现高效的多模式字符串匹配。文章涵盖了Trie树和KMP算法的基础知识,并提供了一个详细的代码示例,包括构建Trie树、设置失败指针以及执行搜索的过程。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文探讨了如何利用伸展树(Splay Tree)来高效地处理区间操作,包括区间修改、查询和删除等。通过引入size域,伸展树能够灵活应对序列结构的变化。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • 本文介绍了一个基础算法题目,旨在通过求解特定范围内所有数字的阶乘之和来提升编程技能。重点在于理解和实现双重循环结构。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • 本文探讨了如何利用数组来构建二叉树,并介绍了通过队列实现的二叉树层次遍历方法。通过具体的C++代码示例,详细说明了构建及打印二叉树的过程。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
author-avatar
追梦and寻梦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有