linux 内核代码学习(八)

总体目标:由于fedora10 linux发行版中自带的linux2.6.xx内核源码规模太庞大了,对于想通读内核源码的爱好者来说太困难了,因此选择了linux2.4.20内核来进行测试(最终是希望能够实现linux1.0内核的源码完全编译和测试)。

实施步骤:根据redhat9发行版的gcc和binutils版本,在fedora10中构建相同的编译环境并进行linux2.4.20内核的编译和测试,制作2.4.20内核的软盘启动盘,然后通过虚拟机启动,能够看到linux2.4.20内核启动成功。后续低内核版本也按照低gcc版本和对应的binutils版本来构建编译环境进行内核的编译测试。

编译linux2.4.20内核的时候,我的内核源码时放在win10的主机上,通过wmware10文件共享功能fedora10虚拟机共享内核源代码,然后利用fedora10中安装的编译环境来编译内核,由于ln命令不支持跨文件系统建立软硬连接,所以修改makefile文件,注释了箭头指示的两个地方,然后直接在内核源码include目录中按照所需要编译的目标系统,拷贝一份,将文件夹名字修改为asm。

内核编译或者make dep操作出现错误:“/mnt/hgfs/linux-2.4.20/include/linux/kernel.h:10:20: stdarg.h: 没有那个文件或目录”,但系统上能够查询到此文件

我的解决方法:因为我用的是gcc-3.2.2编译器,源程序在/home目录,安装在/opt/目录,因此我直接将/home/gcc-build/gcc/include/stdarg.h文件拷贝到内核源码目录linux-2.4.20/include中,能够顺利编译和通过make dep。

Linux2.4.20内核编译过程中出现汇编错误如下解决:后面在fedora10中将安装的as-2.13.2.1拷贝到/usr/bin目录中更名为as,发行版自带的as先备份为as_bak,后续准备创建一个封闭的gcc3.2.2+as-2.13.2.1编译环境,不影响发行版的编译环境。

出现这个汇编错误,是因为as的版本跟gcc的版本不配套导致的,redhat9 linux的发行版里面gcc和as版本如下,编译没有问题:gcc3.2.2+as 2.13.90+ld 2.13.90。

目前我使用的fedora10 linux发行版自带的gcc和as版本是:gcc4.3.2+as 2.18.50+ld 2.18.50

解决办法是在fedora10 linux发行版中安装gcc3.2.2+as 2.13.90+ld 2.13.90编译环境。

Gcc的安装如下,网络搜索了安装方法,有通过YUM工具进行安装,因为linux发行版的原因,这种方式一般都不能安装到自己需要的gcc版本,yum工具搜索到的都是跟发行版接近的版本;因此我先用fedora10的yum工具安装gcc3.4,Index of /gnu/binutils上直接下载gcc3.2.2源码,再用gcc3.4编译gcc3.2.2并安装gcc3.2.2。

通过上面的步骤,将gcc3.2.2安装到了/opt/gcc-3.2.2目录,这样系统中就有了多个版本的gcc编译器。

Fedora10下yum安装低版本gcc

  1. Fedora10下gcc位置及其版本如下:

2、根据需要,要安装低版本的gcc,如果直接用"yum install gcc"安装时默认是安装最新版本的gcc。

3.可先通过“yum list compat-gcc*”查看版本,然后再利用“yum install compat-gccXXX”安装,如下:

4.接下来指定要安装的版本进行安装:

5.输入y就开始下载并自动安装,并在目录“/usr/bin/”目录下生成如下gcc34:

6.接下来进行测试,在命令终端查看gcc版本,"gcc -v"和"gcc34 -v":

多个版本gcc并实现快捷切换

在实际生成过程中可能需要不同gcc版本来完成编译工作。可以在环境中配置好不同版本的gcc,方便快捷的实现版本的切换。Fedora10发行版中gcc是4.3.2版本,名字就是gcc,如果有多个版本的时候不好区分,后面将默认的gcc修改为gcc43。

linux下gcc默认保存路径:/usr/bin,有两个版本的gcc,gcc3.4.6和gcc4.3.2如下:

通过update-alternatives工具实现不同版本gcc之间的快捷切换

1、不同版本gcc的配置与切换

update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。设置多个版本gcc可用选择调用:

设置多个版本的gcc可供选择。70,60数字代表的是不同版本的优先级,默认最大数字版本的优先级:

update-alternatives --install /usr/bin/gcc  gcc  /usr/bin/gcc 70

update-alternatives --install /usr/bin/gcc gcc  /usr/bin/gcc34 60

这里通过update-alternatives用alternatives也行,设置了gcc3.4.6和gcc4.3.2两个版本的gcc。因为gcc4.3.2的优先级更高,所以默认是gcc4.3.2。

切换gcc版本:alternatives --config gcc

通过输入版本序号就能方便快捷的实现gcc版本的切换了。将发行版默认的gcc修改为gcc43方便区分。

由于系统默认的安装目录是/usr/bin,运行时都是在这些目录中寻找可执行文件,将gcc安装到其他目录后需要设置环境变量才能使用新安装的gcc文件。

下面是进行binutils工具的安装(包含as,ld)。下载地址:Index of /gnu/binutils

从服务器上下载源代码,用gcc3.2.2编译安装,在配置的时候提示CC错误,如下设置CC变量,并安装到/opt/binutils-2.13.2.1目录中。

创建binutils-2.13.2.1源文件makefile成功,然后执行make;make install

下图所示为不同版本的binutils中的as的管理和切换:

通过make menuconfig;make bzImage配置和编译一个最小内核,使用虚拟机设置里面的创建软盘功能,创建一个名为:boot2.4.20的flp类型的软盘来作为内核2.4.20的启动盘,在fedora10中连接这个软盘,然后执行make bzdisk,创建启动盘,在一个新的测试虚拟机中直接冲软盘引导,启动linux2.4.20内核,如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust的数据类型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一 -CSDN博客 Rust到底值不值得学,之二-CSDN博客 3.5 数据类型的定义和分类 在Rust…

亚马逊逆袭:我是怎么让店铺从平庸到高增长的

今年的亚马逊Prime会员大促即将到来,对于各位卖家来说,这不仅代表着提升店铺主推商品排名、加速商品销量增长的机会,还意味着为年末其他大促活动提前引流获客的大好时机,绝对不容错过! 如果你的亚马逊店铺还是表现平平…

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3) 前言相关介绍1,登录界面:2,主界面:3,部分功能演示如下(1)识别网络图片(2)GoogleNet分类&#xf…

【基础】Three.js 自定义几何体和复制几何体

通过自定义顶点数据,可以创建任意的几何体。像threejs的长方体BoxGeometry、球体SphereGeometry等几何体都是基于BufferGeometry类构建的,它表示一个没有任何形状的空几何体。 1. 自定义点模型 通过javascript 类型化数组 Float32Array创建一组xyz坐标…

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…

IMU腕带评估轮椅用户运动健康

近期,美国的研究团队利用惯性测量单元(IMU)和机器学习来准确评估手动轮椅使用者的运动健康状况,这在康复训练和慢性病管理领域具有广阔的应用前景。 研究小组将运用高性能的IMU传感器固定到轮椅使用者佩戴的手腕带上,用…

分享一套外链系统,付费进群系统

本系统特点,活码系统以及卡片系统,付费进群系统 分享一套外链系统其中带付费进群系统插件,前端做了美化

第90集《大佛顶首楞严经》

《大佛顶如来密因修正了义诸菩萨万行首楞严经》。监院法师慈悲,诸位法师,诸位同学,阿弥陀佛! 请大家打开讲义197面 子一、现化表法 诵持『楞严神咒』在整个修学《首楞严王三昧》的过程,它所扮演的角色有两个&#x…

记录一下idea的一些使用技巧和遇到的异常(持续更新)

技巧 自己的模板——live template 有些代码在项目中通常会被用到或会被重复使用,可以自己写一个模板存起来,要用的时候用快捷键生成就可以了。 在这里选择生效范围 现在,就有我们自己的模板了,一回车就自动生成 idea的全局配置…

蓄水池漂浮物识别摄像机

蓄水池是重要的水资源储备设施,但常常会受到漂浮物的影响,影响水质和使用效果。为了及时监测和清理蓄水池中的漂浮物,蓄水池漂浮物识别摄像机 被广泛应用于各类水库、湖泊等场所。这种摄像机结合了图像识别技术和人工智能算法,能够…

照片信息的读取与分类(1)

通过Python的各种模块我们可以很方便的获取到文件的各种属性数据,比如文件修改时间、文件大小或是本节课获取到的照片拍摄时间等。获取到了这些数据后,我们就可以对文件按照需求进行移动、改名甚至删除等操作。配合Python批量处理文件的优势,…

elementUI table 给表头添加气泡显示(鼠标悬浮显示注释)

elementUI table 给表头添加气泡显示(鼠标悬浮显示注释) 前言:文档显示:(使用插槽,我看看到底是怎么个事儿)文档代码:修改后的效果:页面效果: 前言: 公司出现…

【ACM出版】2024年第四届工商管理与数据科学国际学术会议 (BADS 2024,10月25-27)

2024年第四届工商管理与数据科学国际学术会议(BADS 2024)将于2024年10月25-27日在中国重庆召开,大会由喀什大学支持。 在当今全球化与数字化迅速发展的时代,工商管理与数据科学作为推动经济增长和技术进步的重要力量,正以前所未有的速度交叉融…

骨传导耳机哪款好?精选五款热门骨传导耳机分享让你避免踩雷

目前在市面当中,骨传导耳机被称之为是黑科技耳机,骨传导耳机拥有很多优势,在听歌时不需要入耳,不会伤耳朵。随着骨传导耳机品牌的不断发展,人们在选购骨传导耳机时,也会觉得非常困难,可能一不小…

【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能

昨天写了一篇文章,使用fastapi直接操作neo4j图数据库插入数据的例子, 本文实现LLM大模型结合neo4j图数据库实现AI问答功能。 废话不多说,先上代码 import gradio as gr from fastapi import FastAPI, HTTPException, Request from pydantic…

STM32CubeMX软件配置及点灯操作(基于STM32F4系列+HAL库)

注:本文主要记录一下STM32CubeMX软件的使用流程。 01 软件安装 1.keil 需要安装以下支持包(keil在线安装里没有对应芯片支持包)。 2.STM32CubeMX 安装库: 3.串口助手 02 硬件连接 该原理图来源于学益得在线课堂教学项目《RTOS项目实战:从PCB到Free…

STM32F407ZGT6单片机HAL库——DAC输出

一、输出直流电压 1.cubemax的配置(通道1) 2.直流电压大小计算 3.主函数加入初始化的程序 float DAC_voltage1.5;HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, DAC_voltage*4095/3.3);//HAL_DAC_Start(&hdac,DAC_CHANNEL_1); 二、…

(一)模式识别——基于SVM的道路分割实验(附资源)

写在前面:本报告所有代码公开在附带资源中,无法下载代码资源的伙伴私信留下邮箱,小编24小时内回复 一、实验目的 1、实验目标 学习掌握SVM(Support Vector Machine)算法思想,利用MATLAB的特定工具箱和库函…

【2024高教社杯全国大学生数学建模竞赛】ABCDEF题 问题分析、模型建立、参考文献及实现代码

【2024高教社杯全国大学生数学建模竞赛】ABCDEF题 问题分析、模型建立、参考文献及实现代码 1 比赛时间 北京时间:2024年9月5日 18:00-2024年9月8日20:00 2 思路内容 2.1 往届比赛资料 【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案…

AI学习记录 - 旋转位置编码

创作不易,有用点赞,写作有利于锻炼一门新的技能,有很大一部分是我自己总结的新视角 1、前置条件:要理解旋转位置编码前,要熟悉自注意力机制,否则很难看得懂,在我的系列文章中有对自注意力机制的…