当前位置: 首页 > news >正文

天河高端网站建设网站编程培训

天河高端网站建设,网站编程培训,androidapp开发教程,中国前100强企业本篇文章的内容 一、嵌入式操作习系统开发的常用概念和工具1.1 本地编译和交叉编译1.2 调试器GDB#xff08;The GNU Project Debugger#xff09;1.3 QEMU模拟器1.4 项目构造工具Make 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记#xff0c;计划从RISC… 本篇文章的内容 一、嵌入式操作习系统开发的常用概念和工具1.1 本地编译和交叉编译1.2 调试器GDBThe GNU Project Debugger1.3 QEMU模拟器1.4 项目构造工具Make 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记计划从RISC-V的底层汇编指令学起结合C语言在Ubuntu 20.04上开发一个简易的操作系统。一个目的是通过实践操作学习和了解什么是操作系统第二个目的是为之后学习RISC-V的集成电路设计打下一定基础。本系列持续不定期更新分享出来和大家一同交流进步。   博主是微电子科学与工程专业的学生对软件和操作系统难免有理解不到位的地方。如有谬误敬请不吝告知不胜感激。   参考课程及文章   【Bilibili】[完结] 循序渐进学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春 一、嵌入式操作习系统开发的常用概念和工具 嵌入开发是一种比较综合性的技术它不单指纯粹的软件开发技术也不单是一种硬件配置技术它是在特定的硬件环境下针对某款硬件进行开发是一种系统级别的与硬件结合比较紧密的软件开发技术。   一般来说我们在主机Host PC上对程序进行编辑和编译通过特定的手段将主机和目标板Target Board进行连接例如WIFI、互联网、有线连接等使程序在特定的目标板上运行。程序运行在特定的硬件上操作系统运行的机器也当然要运行在没有操作系统的硬件上。编写操作系统同样是嵌入式开发的一种。 1.1 本地编译和交叉编译 参与编译和运行的机器根据其角色可以分成以下三类 构建build 系统执行编译构建动作编译器可执行程序的计算机。例如编写GCC工具的计算机。主机host 系统运行 build 系统生成的可执行程序的计算机系统。目标target 系统特别地当以上生成的可执行程序是 GCC 时我们用 target 来描述用来运行 GCC 将生成的可执行程序的计算机系统。 所以我们可以对本地编译和交叉编译两种工作环境作如下定义 本地native编译build、host、ratget三个系统在同一台机器上。例如在本地编写的C语言程序在本地运行。交叉cross编译build和host系统在同一台机器上但是和target系统是分离的。例如在PC上编写的程序烧录到单片机上运行。 例如如果要查看gcc实际是什么可以执行如下操作 $ whereis gcc gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/gcc /mnt/c/Program Files (x86)/mingw64/bin/gcc.exe /usr/share/man/man1/gcc.1.gz $ ls -l /usr/bin/gcc lrwxrwxrwx 1 root root 5 Mar 20 2020 /usr/bin/gcc - gcc-9 $ ls -l /usr/bin/gcc-9 lrwxrwxrwx 1 root root 22 Oct 24 2022 /usr/bin/gcc-9 - x86_64-linux-gnu-gcc-9 $ ls -l /usr/bin/x86_64-linux-gnu-gcc-9 -rwxr-xr-x 1 root root 1158288 Oct 24 2022 /usr/bin/x86_64-linux-gnu-gcc-9可以看到执行gcc后程序实际执行的程序是x86_64-linux-gnu-gcc-9。GCC被多层符号变量封装在一起了供用户使用。   GNU 交叉编译工具链Toolchain 命名格式 arch-vendor-os1-[os2-]XXX 例子 x86_64-linux-gnu-gccriscv64-unknown-elf-gccriscv64-unknown-elf-objdum 1.2 调试器GDBThe GNU Project Debugger GDB即GNU 项目调试器用于查看另一个程序在执行过程中正在执行的操作或该程序崩溃时正在执行的操作。   被调试的程序可能与 GDB 在同一台计算机上执行也可能在另一台计算机远程上或者在模拟器上执行。GDB 支持调试多种语言譬如AssemblyCGoRust… 重新编译程序并在编译选项中加入 “-g” $ gcc -g test.c运行 gdb 和程序 $ gdb a.out设置断点 (gdb) b 6运行程序 (gdb) r程序暂停在断点处执行查看 (gdb) p xxx继续、单步或者恢复程序运行 (gdb) s/n/c1.3 QEMU模拟器 QEMU 是一套由 (Fabrice Bellard) 编写的以 GPL 许可证分发源码的计算机系统模拟软件在 GNU/Linux 平台上使用广泛。 支持多种体系架构。譬如IA-32 (x86)AMD 64MIPS 32/64, RISC-V 32/64 等等。 QEMU 有两种主要运作模式 User mode直接运行应用程序。System mode。模拟整个计算机系统包括中央处理器及其他周边设备。 1.4 项目构造工具Make make是一种自动化工程管理工具。当工程文件量很大的时候在Linux系统中每一次编译文件都要手动输入命令。如果文件有一千个一万个那我们每次编译输入的指令就及其庞大对开发效率的影响很大当然在这里我们可以对每个文件先编译而不连接生成很多的*.o文件在编译时将所有的*.o文件连接但这样的方法远没有编写Makefile优雅。所以我们可以编写一个每次编译自动执行的脚本文件这个文件满足一定的格式这就是Makefile格式。Makefile配合make用于描述构建工程过程中所管理的对象以及如何构造工程的过程。make找到Makefile有如下两种方式 隐式查找当前目录下自动按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件显式查找-f例如使用make -f Makefile来编译工程 Makefile由一条或多条规则rule组成这是make中最核心的一点。每一条规则由如下的三要素构成 target目标可以是 obj 文件也可以是可执行文件prerequisites: 生成 target 所需要的依赖command为了生成 target 需要执行的命令可以有多条 一个简单的Makefile规则如下 target...:prerequisites...command......例如对于目标hello其依赖于文件hello.c我们在此基础上添加指令可以编写如下的Makefile文件 hello: hello.cgcc hello.c -o helloMakefile中还有其他的元素例如缺省规则、伪规则、行注释等。它们的格式如下 # 缺省规则当make的缺省规则默认规则不满足当前工程的需求时可以重写缺省规则以覆盖原有的默认规则 .DEFAULT_GOAL : all all :# 伪规则它的作用是有同名的文件与make clean操作冲突产生歧义-f为强制删除 .PHONY : clean clean:rm -f *.o对于一个工程假设其含有main.c、file1.c、file2.c则可以编写如下的Makefile文件。它的好处是当单独修改工程中的某个文件重新编译时只会编译修改过的文件可以大大节省编译时间。 CC gcc TARGET hello OBJ main.o file1.o file2.o$(TARGET) : $(OBJ)$(CC) -o $(TARGET) $(OBJ)main.o: main.c$(CC) -c main.cfile1.o: file1.c$(CC) -c file1.cfile2.o: file2.c$(CC) -c file2.c或者采用以下省略写法。注意省略写法使Makefile文件编写更简单但是可以说可读性极差笔者认为应该谨慎使用不要出错。但是采用省略的灵活写法带来的优势也是很大的如果按如下的写法那么在工程中每次添加新的.c文件时仅需要在OBJ后添加对应的.o即可。 $代指目标即冒号:之前的内容$^代指所有的依赖%.o所有的.o文件%.c同理$依赖中的第一个 CC gcc TARGET hello OBJ main.o file1.o file2.oCCFLAGS -c -Wall$(TARGET) : $(OBJ)$(CC) -o $ $^%.o: %.c$(CC) $(CCFLAGS) $ -o $.PHONY : clean clean:rm -f *.o甚至可以有更加灵活的写法采用如下的写法每一次添加新的.c文件后甚至都不需要更改Makefile文件了 CC gcc TARGET hello SRC $(wildcard *.c) OBJ $(patsubst %.c, %.o, $(SRC))CCFLAGS -c -Wall$(TARGET) : $(OBJ)$(CC) -o $ $^%.o: %.c$(CC) $(CCFLAGS) $ -o $.PHONY : clean clean:rm -f *.o原创笔记码字不易欢迎点赞收藏~ 如有谬误敬请在评论区不吝告知感激不尽博主将持续更新有关嵌入式开发、机器学习方面的学习笔记。
http://www.hkea.cn/news/14502199/

相关文章:

  • wordpress视频主题模板上首页seo
  • iis添加网站建设中网站的目标定位有哪些
  • 网站服务器时间在哪里查询做移动网站优化快速
  • 台州做微网站有哪些网站可以做设计竞标
  • 做一个公司网站单页导航html5源码
  • 网站建设需要注意的关键细节大足网站建设
  • 网站建设分为哪三部分wordpress 端口
  • 网站支付宝接口代码短视频推广渠道有哪些
  • 图书翻页的动画 做网站启动用网站流量的做
  • 什么是网站建设的三次点击原则长尾关键词挖掘精灵官网
  • 家庭电脑做网站长春app制作
  • win7 iis 发布asp.net网站怎么做简单的视频网站
  • 网站备案账号手机官方
  • 乐清房产在线网seo如何优化图片
  • 网站排名优化机构河南省住房和城乡建设厅门户网站
  • 深圳企业建站设计公司网页设制作与网站建设宝典 pdf
  • 图书馆网站建设教程河北网站开发
  • 天津网站优化公司哪家好有源码做网站
  • 网站模块如何添加手机触屏网站开发
  • 重庆营销型网站开发价格北京网站主题制作
  • 网站开发公司介绍创意家具设计作品
  • 国外档案网站建设青岛南丰网站建设公司
  • 建设网站有哪些方法有哪些网站网站制作多少钱
  • 游泳池建设有专门的网站吗建设银行考试报名网站
  • 北京做网站的公司拟淮南58同城网
  • 上海企业建站公司哪家好网站做个seo要多少钱
  • 青岛李沧区网站建设零基础怎么自学动画制作
  • 有没有帮别人做图片的网站赚钱网站开发模块的需求
  • 传播型网站建设优势有哪些当当网站建设与易趣网站对比
  • 阜宁城乡建设局网站wordpress自动推送token