ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

程序编译过程和使用vi在两个文件中复制以及linux中的工具小记

2022-01-07 21:33:20  阅读:130  来源: 互联网

标签:文件 vi 链接 linux 格式 myboot arm 小记


在这里插入图片描述
一、编译过程
1、预编译:展开头文件和宏定义等。pre-compile;
2、编译:***.c–>***.s,将c文件编译成汇编文件;compile;
3、汇编:***.s–>***.o,将***.s文件转成***.o文件;Assembly;***.o文件可以在linux中通过arm-linux-size 命令来查看.text、.data、.bss各段的大小。
bss段通常是指用来存放程序中未初始化的或者初始化为0的全局变量和静态变量的一块内存区域。
4、链接:***.o+…+***.o–>***,即将多个.o文件链接成一个elf文件。将.text 和.text段链接在一起,.data和.data段链接在一起,.bss和.bss段链接在一起,连接过程通过链接脚本***.lds文件实现。
lds文件实现如下:
在这里插入图片描述
链接过程如下:
在这里插入图片描述
其中,arm-linux-ld 是链接指令,-T表示链接lds文件,-o myboot表示输出文件,最后两个.o文件是输入文件。
此文件可以在linux系统运行,但是无法在裸板上运行。link;executable link file。
5、转成二进制文件:***–>***.bin,将elf文件中的调试信息等剥离后生成二进制文件。

多看几遍下面的视频,P14节
https://www.bilibili.com/video/BV1s4411t7eT?p=14&spm_id_from=pageDriver

二、使用vi在两个文件中复制(从a.txt复制1-4行内容到b.txt
1、使用vi打开a.txt,然后将光标移至第一行处;
2、直接输入 “a3yy 回车即可,出现 3 lines yanked 提示复制成功;
3、使用vi打开b.txt,将光标放在要粘贴的位置,直接输入 ”a3p 回车即可,出现 3 more lines 提示粘贴成功。

三、使用arm-linux-objdump 工具,可以查看**.o文件的机器指令**,以及反汇编代码
objdump -S obj :表示C语言与汇编语言同时显示
在这里插入图片描述
1:指令地址;
2:机器代码;
3和4:反汇编指令。

四、arm-linux-objcopy命令将链接后的文件转成bin文件。
arm-linux-objcopy用于复制一个目标文件的内容到另一个文件中,可以使用不同于原目标文件的格式来输出目的文件,即其可以进行格式转换。
在开发中,一般会用其来将ELF格式的可执行文件转换为二进制格式的文件,arm-linux-objcopy的使用格式如下:
arm-linux-objcopy [-F bfdname | –target=bfdname ]
-O bfdname 或–output-target=bfdname
使用指定格式来输出文件,bfdname是BFD库中描述的标准格式名。

arm-linux-objcopy -O binary myboot myboot.bin

表示将myboot文件按照binary格式转换成myboot.bin文件。

五、hexdump -C myboot.bin
表示将myboot.bin文件同时用二进制格式和ASCII码同时打印出来。

六、armv1,armv2,armv3…armv7表示的arm指令集的版本;
arm7和arm9表示的是arm核硬件的版本号。

七、Makefile编写
在这里插入图片描述

标签:文件,vi,链接,linux,格式,myboot,arm,小记
来源: https://blog.csdn.net/weixin_44837631/article/details/122366198

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有