ELF与BIN文件的生成和转换_objcopy elf转bin-程序员宅基地

Gcc 编译出来的是ELF文件。通常gcc –o test test.c,生成的test文件就是ELF格式的,在linuxshell下输入 ./test就可以执行。

Bin 文件是经过压缩的可执行文件,去掉ELF格式的东西。是直接的内存映像的表示。在系统没有加载操作系统的时候可以执行。

ELF(executable  and   link   format)文件里面包含了符号表,汇编等
BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。
 

在Embedded中,如果上电开始运行,没有OS系统,如果将ELF格式的文件烧写进去,包含一些ELF格式的东西,arm运行碰到这些指令,就会导致失败,如果用arm-softfloat-linux-gnu-objcopy生成纯粹的汇编 bin文件,程序就可以一步一步运行。

两种文件都可以运行

机器最终只认BIN,之所以有ELF格式是在有操作系统时,操作系统会根据ELF解析出代码、数据等等,最终仍是以BIN运行。由于elf文件的信息比较全,所以可以用来以单步跟踪的方式运行。关键是看loader。

 

嵌入式开发的时候,我们的编译一个*.S文件,并最终生成bin文件,编译命令大致如下:

CC=arm-softfloat-linux-gnu-gcc

LD=arm-softfloat-linux-gnu-ld

OBJCOPY=arm-softfloat-linux-gnu-objcopy

 

$(CC) -g$(CFLAG) -c boot.S     #先将boot.S文件生成boot.o

$(LD) -g-Bstatic -T$(LDFILE) -Ttext 0x12345600 boot.o --start-group -Map boot.map -oboot.elf    #再将boot.o生成boot.elf,boot.elf通常就是可执行文件,类似于gcc-o test test.c 中的test文件,在LinuxShell下输入./test就可以执行。

$(OBJCOPY)-O binary boot.elf boot.bin    #接着将boot.elf->boot.bin,这样可以缩小代码尺寸。

 

运行arm-softfloat-linux-gnu-objdump-h boot.elf 可以查看该文件的信息,但是如果变成

arm-softfloat-linux-gnu-objdump-h boot.bin会提示错误,为了看boot.bin文件信息,输入:

arm-softfloat-linux-gnu-objdump-h -b binary -m arm boot.bin就可以了。哈哈我也是现学了一招,其中参数-h可以被替换成为-D, -S,-s等等,请用arm-softfloat-linux-gnu-objdump--help查看器中表示的意义。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/boazheng/article/details/104299236

智能推荐

QT通过Dom树修改XML文件_qt修改xml-程序员宅基地

文章浏览阅读2.5k次,点赞5次,收藏20次。一:需求通过程序的方式对xml文件进行修改,比如自己做一个xml文件修改器,只需要向文本框里面输入你要修改的内容,然后点击编辑,就可以修改相应的xml文件了。二:方法QT提供了多种方法去对xml文件进行读改操作,例如DOM方式和SAX方式,这两种方法适用于不同的情况,看你自己xml文件的大小然后决定用哪种方式,我这里是用的DOM树的方式。三:实现1,test.xml<?xml version="1.0" encoding="UTF-8"?><rootName> _qt修改xml

JAVA开发简单作业管理系统_java作业管理系统-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏75次。1、开发基于Mysql、Servlet、JSP的作业管理系统;2.功能—— 老师:添加作业,添加学生。查询学生作业; 学生:根据老师添加的作业,进行作业提交;3、github源码地址_java作业管理系统

Raspberry Pi OS学习笔记_no input was specified, using the first.-程序员宅基地

文章浏览阅读629次,点赞2次,收藏3次。树莓派操作系统浅析一、使用APT命令APT是Advantaged packaging Tool的缩写,负责软件的管理、安装、更新和卸载。这些软件的来源保存在/etc/apt/sources.list文件中,我们可以对其中的内容进行修改来更换软件来源。在换源过后,我们首先要使用apt update,来获取更新当前软件源中包含的软件列表,执行完该命令后系统会反馈目前有多少软件需要更新sudo apt update接下来我们就要用apt upgrade命令来更新这些软件sudo apt full-u_no input was specified, using the first.

深度学习:可视化方法(模型可视化,训练过程可视化,特征提取可视化)_深度学习模型效果进行可视化-程序员宅基地

文章浏览阅读6.4k次,点赞8次,收藏67次。深度学习可视化,pytorch(tensorboard/netron)_深度学习模型效果进行可视化

操作系统常用词典(一)_min操作系统词汇大全-程序员宅基地

文章浏览阅读507次。操作系统常用词典(一) 操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。在过去,它是类似 Unix 的系统上唯一可用的用户界面。如今,除了命令行界面(CLI)外,我们还具有图形用户界面(GUI)。.._min操作系统词汇大全

时间序列--检验是否平稳_时间序列算法要求数据服从正态分布么-程序员宅基地

文章浏览阅读6k次。第一种方法:利用统计量You can split your time series into two (or more) partitions and compare the mean and variance of each group. If they differ and the difference is statistically significant, the time seri..._时间序列算法要求数据服从正态分布么

随便推点

Windows系统下:jenkins+selenium+TestNG一步搞定简单自动化持续集成_jenkins执行java selenium testng-程序员宅基地

文章浏览阅读9.6k次,点赞2次,收藏18次。Windows系统下:jenkins+selenium+TestNG一步搞定简单自动化持续集成注意!注意!本篇只介绍Windows系统下的操作!1.安装jenkins,最好从官网下载并安装:https://jenkins.io/download/,安装过程很简单,一路下一步就可以。安装过程中的小插曲,如图:然后按照导航默认选择的进行启动jenkins服务即可。【_jenkins执行java selenium testng

计算机学的痛苦可以换专业,在大学里选错了专业,是一种怎样的“痛苦”体验?...-程序员宅基地

文章浏览阅读163次。原标题:在大学里选错了专业,是一种怎样的“痛苦”体验?◆◆◆中国有句大家都耳熟能详的老话:男怕入错行,女怕嫁错郎而现在的社会现实是:男女生都怕选错了专业,入错行 在大学里选错专业是什么体验呢?网上各种叫苦连天 △结果大约16900000余个敲黑板各位考生和家长一定要引起重视学姐从中截取了两段回答选错专业真的会毁一生▼@知乎用户:其实一开始我是打算填计算机的,因为从小就喜欢游戏,也喜欢折腾计算机。结..._电脑盲误选了计算机专业是什么感受

基于Python+Django+Vue+MYSQL的个人博客网站系统_diango4+vue3开发个人博客-程序员宅基地

文章浏览阅读786次。随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多网站的之中,随之就产生了“校园博客系统”,这样就让校园博客系统更加方便简单。_diango4+vue3开发个人博客

PADS 设置CAM以输出GERBER文件_pads cam文件输出设置-程序员宅基地

文章浏览阅读1.3w次,点赞11次,收藏62次。这里写自定义目录标题自动生成CAM文档顶/底层阻焊层顶/底层助焊层顶/底层丝印顶/底层钻孔层钻孔图生成GERBER文件自动生成CAM文档默认情况下,PADS Layout里CAM下的文档列表是空的。camcam2输入无模命令@camdocs,自动生成CAM文档。camdocscamdocs2制造层名称Top/Bottom顶/底层Solder Mask T..._pads cam文件输出设置

2021-05-28 sqlplus命令连接数据库的几种方法_sqlplus连接数据库命令-程序员宅基地

文章浏览阅读751次。sqlplus命令连接数据库的几种方法方法一:sqlplus / as sysdba方法二:sqlplus username/passwd方法三:sqlplus username/passwd@tnsname方法四:sqlplus username/passwd@host:port/ORACLE_SID_sqlplus连接数据库命令

MTK Android Driver:GPIO_android gpio 配置-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏17次。1.各列参数说明:1.1.Def.Mode:表示开机后gpio模块初始化后的模式,每个GPIOpin最多有7种模式,MODE0总是为GPIO mode。GPIO在系统初始化后的mode是由Def.Mode这一栏决定的。1.2.M0--M7:M0-M1-M3-M4-M5-M6-M7各个GPIO的可选的模式。如果勾选了M0-M7中的某些项,则会生成类似 #..._android gpio 配置