关于在vscode中的Linux 0.11 应用程序项目的生成和运行

embedded/2025/3/31 11:15:20/

首先我们需要需要查看镜像文件

查看软盘镜像文件 floppyb.img 中的内容
在 VSCode 的“Terminal”菜单中选择“Run Build Task...”,会在 VSCode 的顶部中间位置弹出一个
可以执行的 Task 列表,选择其中的“打开 floppyb.img”后会使用 Floppy Editor 工具打开该项目中的
floppyb.img 文件,用于查看软盘镜像中的文件。其中的 linuxapp.exe 文件就是刚刚生成的 Linux 0.11
应用程序,可以注意查看一下该文件的修改日期,如图 1-4 所示。查看完毕后关闭 Floppy Editor。
在 VSCode 的“Terminal”菜单中选择“Run Build Task...”,会在 VSCode 的顶部中间位置弹出一个
可以执行的 Task 列表,选择其中的“打开 floppyb.img”后会使用 Floppy Editor 工具打开该项目中的
floppyb.img 文件,用于查看软盘镜像中的文件。其中的 linuxapp.exe 文件就是刚刚生成的 Linux 0.11 应用程序。如果没有的话可以手动添加进去
Linux 0.11 启动后,在 Bochs 的 Display 窗口的终端中使用“mcopy b:linuxapp.exe
linuxapp”命令将软盘 B 中的可执行文件 linuxapp.exe 拷贝到硬盘的当前目录中,并命名为
linuxapp
在终端输入“linuxapp”命令运行上一步拷贝的文件 linuxapp,此时会提示“无法运行二进制文
件”信息,原因是 linuxapp 文件没有可执行权限。使用“ls -l linuxapp”命令查看该文件
的权限,可以看到其只有 r(read)和 w(write)权限,而没有 x(execute)权限
使用“chmod +x linuxapp”命令使之具有可执行权限。再次使用 ls 命令确认文件权限修改后,
就可以运行该文件了
接下来我们讲如何 在 Linux 0.11 操作系统中编写应用程序
首先我们在Linux 0.11 启动完毕后,在其终端中使用下列命令创建
一个 newapp 文件夹,并进入该文件夹
使用 vi 创建一个源代码文件 add.c,在其中定义一个函数 int add(int x, int y),计算并返回
两个参数之和
进入页面后:
后面编写程序:
注意3点最基础操作:
1.随意按一个值为唤醒写操作,就可以在里面输入代码了
2.如果输错了,需要按电脑左上角esc退出,然后调整左右光标到对应的那一个字符按x删除,再进入编辑模式同第一点
3.按esc后输入:和wq退出保存
其余操作可以看其他vi编辑器操作
删除文本的命令可以分为删除单个字符和删除多个字符两类。其中,删除单个字符的命令包括下面两种情况。
x 命令:删除光标处的字符。若在 x 之前加上一个数字 n,则删除从光标所在位置开始向右的 n 个字符。
X 命令:删除光标前面的字符。若在 X 之前加上一个数字 n,则删除从光标前面那个字符开始向左的 n 个字符。删除多个字符的命令包括下面几种情况。
dd 命令:该命令删除光标所在的整行。在 dd 前可加上一个数字 n,表示删除当前行及其后 n-1 行的内容。
D 命令或 d$ 命令:两个命令功能一样,都是删除从光标所在处开始到行尾的内容。
d0 命令:该命令删除从光标前一个字符开始到行首的内容。
dw 命令:该命令删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。同 dd 命令一样,可在 dw 之前加一个数字n,表示删除 n 个指定的单词。
d( 命令:该命令删除到上一句开始的所有字符。
d) 命令:该命令删除到下一句开始的所有字符。
d} 命令:该命令删除到上一段开始的所有字符。
d{ 命令:该命令删除到下一段开始的所有字符。
d<CR> 命令:该命令(<CR>表示回车)删除包括当前行在内的两行字符

退出保存后像上一步那样写main.c

vi main.c

然后写代码:

下面编写 makefile 文件管理项目

Make 工具可以用来管理一个项目中多个源代码文件的编译和链接过程,也可以用来管理多个模块间的
依赖关系,甚至是软件的安装过程。
控制台vi makefile,然后写以下代码:

:wq退出后记得sync保存到本地磁盘

并在 Linux 0.11 的终端使用下面的命令将刚刚编写的文件复制到软盘 B 中
mcopy add.c b:add.c
mcopy main.c b:main.c
mcopy makefile b:makefile

最后关闭闭 Bochs 虚拟机

在打开floppyb.img镜像文件,可以看到:

大功告成!

以上为个人学习心得,有误请指出,感谢不尽!


http://www.ppmy.cn/embedded/177306.html

相关文章

vue3 ts 请求封装后端接口

一 首页-广告区域-小程序 首页-广告区域-小程序 GET/home/banner1.1 请求封装 首页-广告区域 home.ts export const getHomeBannerApi (distributionSite 1) > {return http<BannerItem[]>({method: GET,url: /home/banner,data: {distributionSite,},}) }函数定…

【MySQL | 六、索引特性(进一步理解)】

目录 索引的理解索引的作用MySQL与磁盘的IOPage单个Page的分类多个Page的组织B树的特点 B树和B树的区别聚簇索引 VS 非聚簇索引聚簇索引的优缺点非聚簇索引的优缺点 创建索引常见索引分为&#xff1a;主键索引InnoDB主键索引的生成过程&#xff08;1&#xff09;初始化&#xf…

【区块链 + 文化版权】基于区块链的艺术作品版权登记与交易平台 | FISCO BCOS 应用案例

北京奕江科技与信阳艺术职业学院合作&#xff0c; 实施产教融合&#xff0c; 利用区块链技术为艺术作品版权保护与交易打造新平台。平台通过区块链的分布式、透明性和不可篡改性&#xff0c; 为艺术作品的创作、注册、流通及交易等各个环节提供解决方案&#xff0c; 确保作品确…

Redis学习二

Redis和数据库数据一致性问题 Redis作为缓存分两种情形 只读缓存, 只读缓存无需考虑数据更新问题, Redis中有则返回Redis中的数据, Redis无则查询数据库读写缓存 同步直写策略异步缓写策略 数据读取流程: 正常回写Redis代码流程: public Object getDataById(String id) {…

reactor网络模型

一、介绍 1.为什么需要reactor网络模型 1.1 高并发支持 非阻塞I/O&#xff1a;Reactor模型通过非阻塞I/O操作&#xff0c;允许单线程处理多个连接&#xff0c;减少线程切换开销&#xff0c;提升并发能力。 事件驱动&#xff1a;基于事件驱动机制&#xff0c;系统只在有事件发…

【2025】基于springboot+vue的医院在线问诊系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于Spring Boot Vue的医院在线问诊系统设计与实现功能结构图如下&#xff1a; 课题背景 随着互联网技术的飞速发展和人们生活水平的不断提高&#xff0c;传统医疗模式面临着诸多挑战&#xff0c;如患者就医排队时间长、医疗资源分配不均、医生工作压力大等。同时&#xff0c;…

【2025】基于ssm+jsp的二手商城系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于SSMJSP的二手商城系统设计与实现系统功能结构图&#xff1a; 课题背景 随着经济的发展和人们生活水平的提高&#xff0c;二手交易市场日益活跃。人们对于闲置物品的处理方式逐渐从传统的废品回收转变为通过二手交易平台进行再利用。这种交易模式不仅能够帮助用户节省开支&a…

rabbitmq + minio +python 上传文件

功能实现 RabbitMq接收hello里面传来的消息根据消息在 MobileFile里面新建文件新建文件上传到minio python 新建文件 import os path ./MobileFile file_path os.path.join(path,"new_file.txt") with open(file_path, "w") as file: pass转换成…