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

智能推荐

计算机二叉树节点计算公式,二叉树节点数该怎么计算?有几种算法?-程序员宅基地

文章浏览阅读1.6w次,点赞7次,收藏13次。每一棵二叉树中都有左右两棵子树,子树中又有无数节点,那你们知道子树中的节点该怎么计算吗?快来跟小编了解一下吧。二叉树算法概念对于任何一棵二叉树来说,其叶子结点的数目为n0,且其度数为2的结点数n2,则n0=n2+1.证明:对于此二叉树:设其度数为1的结点数为n1. 从下往上看,每个结点都会有一个边朝上,除了根结点,则边总数为:N=n0+n1+n2-1 ①从上往下看,度数为2的结点有两个边,度数为1..._二叉树节点数计算

deepstream-test5-程序员宅基地

文章浏览阅读908次。英文说明1、可以与服务器联通,接发消息2、物联网 协议 supported by nvmsgbroker plugin is listed in the DeepStream Plugin guide_deepstream-test5

图解KMP算法(研究总结next(数组)算法实现)_kmp算法,next函数实验总结-程序员宅基地

文章浏览阅读828次。记录,防止忘记!!!一 从现象入手Kmp算法 原始匹配方法: Kmp匹配算法(从三张图了解)总结发现:当pattern中第 j 处位置(j > 0)配不上时,让pattern中第m号元素与主串当前位置比较,m = pattern串中 j-1的next(即next[j - 1])+ 1.前缀:至少不含最后一个元素后缀:至少不含第一个元素于是有个大胆的想法:将上述图中这些蓝色字体封装成一个next数组(也叫match数组)..._kmp算法,next函数实验总结

WPS表格 JSA 学习笔记_wps jsa-程序员宅基地

文章浏览阅读1w次,点赞24次,收藏136次。WPS表格 JSA 学习笔记自定义公式单元格内文字颜色Sheet 工作表工作表引用Range单元格引用填写公式单元格赋值Cells 遍历单元格Sheet 范围内遍历Range 范围内遍历参考资料自定义公式function 加括号(区域, 左括号, 右括号){ return `${左括号}${区域}${右括号||左括号}`;}单元格内文字颜色function test(){ var len = Range("A1").Value2.length; for(let i = 1; i<=_wps jsa

Python 打印杨辉三角形(包括金字塔的款式的~~)_python杨辉三角金字塔-程序员宅基地

文章浏览阅读4.7w次,点赞41次,收藏136次。今天是愉快的星期天,终于可以睡个懒觉了。今天是准备被这周的所以内容归纳一下的,然后看到的经典的杨辉三角形,所以就把代码整理了一下。给他取了个狂野的名字。==================================疯狂的杨辉三角形===================================1.普通的杨辉三角形​​ 杨辉三角形的规则就是出意每行的第一个数字之外,..._python杨辉三角金字塔

IDEA配置jdk-程序员宅基地

文章浏览阅读10w+次,点赞38次,收藏80次。提前安装jdk,配置环境变量一、配置jdk1、依次点开File -->Project Structure,点击左侧标签页,点击SDKs2、点击+号,选SDK3、在弹出框选择jdk路径(我本地装了两个jdk,大家可以忽略)4、点击OK,可以看到jdk配置好了5、按照这个顺序,可以配置多个jdk_idea配置jdk

随便推点

获取url参数的方法-程序员宅基地

文章浏览阅读2.1k次。获取url参数主要有两种方法第一种是利用字符串的分割方法,将url以“&”和“=”做分割,得到参数数组,然后再利用数组的迭代方法中的filter()方法,筛选并返回我们需要的数据。function GetQueryString(name) { //获取url中“?”后边的部分,并将结果以“&”分割成数组 var paras = url.split('?')[1].spli_获取url参数的方法

Linux系统优化(Centos7.x系统)_sed -i 's/histsize\=1000/histsize\=0/g' /etc/profi-程序员宅基地

文章浏览阅读824次,点赞2次,收藏4次。Linux系统优化1、更新yum官方源2、调整TCP/IP网络参数3、修改 SHELL 命令的 history 记录个数4、定时校正服务器时间5、关闭IPV6网络6、修改文件描述符限制7、配置网卡自启8、关闭文件记录时间增加磁盘IO9、优化ssh登陆总结优化脚本1、更新yum官方源Centos里面默认的官方源是很慢的,为了让安装软件更快,我i这里选择把源更换为阿里云的源(Centos 7.n)1)下载repo文件wget -P /etc/yum.repos.d/ http://mirrors.al_sed -i 's/histsize\=1000/histsize\=0/g' /etc/profile

Leetcode之括号生成(C++)_c++括号逐步生成结果-程序员宅基地

文章浏览阅读380次。今天,我们来看一下LeetCode的第22道题:括号生成题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路:首先,我们要明确题目的要求,给出n对括号,生成这n对括号的所有..._c++括号逐步生成结果

浙大首届人工智能本科生9月入学,纳入竺院图灵班-程序员宅基地

文章浏览阅读1k次。作者:澎湃新闻见习记者 张唯 实习生 邹静祺据澎湃新闻(www.thepaper.cn)报道,刚刚获批的浙江大学人工智能本科专业将于2019年开始招生,学生纳入新设立的竺..._浙大图灵班课程设置

什么是零次学习(zero-shot Learning)篇一-程序员宅基地

文章浏览阅读9.9k次,点赞3次,收藏25次。最近再进行Zero-Shot Learning关于知识图谱嵌入的研究,这篇文章开始将会从调研Zero-Shot Learning开始逐步记录整个类似问题做知识嵌入的研究过程。 本章80%翻译自一个公开的科学散记 也有本小弱观看去年CVPR的tutorial的个人见解,更多思考会在之后详细说明。Introduction在过去的几十年里,机器变得更加智能,但如果没有将机器所见训练..._零次学习

【项目实战】- nodejs的安装与配置_d: \nodejs>n stable /bin/bash:c:\users\22426appdat-程序员宅基地

文章浏览阅读227次。一、下载官网最新版:http://nodejs.cn/download/根据自身系统下载对应版本验证是否安装成功打开DOS命令界面:node -v出现NodeJS版本即为安装成功!npm -v出现npm的版本号说明npm工具也已安装成功!(我下载的是msi镜像版,直接一步式安装的,其中安装路径可自行更换)二、配置说明:环境配置的目的主要是为了改变安装NodeJS依赖的下载位置,方便日后管理,以及配置缓存Cache的路径。因为NodeJS在执行安装._d: \nodejs>n stable /bin/bash:c:\users\22426appdata\roaming \npm\node_module