GCC全过程详解+剖析生成的.o文件(2)
基于上一篇的相关介绍,这里来实战一下:
上一篇见 https://blog.csdn.net/zwl1584671413/article/details/108146790
比如现在我这边生成了一个可烧录的二进制文件,领导让我估算一下当前的固件会占用多少ram? 多少flash?
这个时候,就需要去分析生成的目标文件的各个section了,如 .data, .text, .bss, .rodata等;
首先,进入我这边和一个最终生成的目标文件的目录下,我们先ls一下:
其中cmcp.bin是要烧录到芯片的二进制文件,烧录后芯片就能跑起来了;而cmcp.elf就是将所有用到的函数变量等等符号链接到一起的目标文件,其格式与.o文件基本一样;
下面我们就来查看它的section情况,首先使用objdump -h命令来看一下,
可以看到各个section的名字和其相应的位置,大小等信息,但是对的不太齐,有点乱;
然后我们使用readelf -S命令来看下,
这个命令比上条命令列出的信息基本一样,但是整齐很多,看各个section的size非常清楚;
但是我们只需要.text .data. .bss这三个段而已,可上面的两个命令列出的太多了,却没有这三个?
我估计应该是上面的sectoin是更新细化的段.要想简单点看.text .data .bss,我们用命令size来看下,
这下一目了然了.
这下可以完成任务了.报告领导,当前的文件,ram占用空间为(20150+460898)字节,flash占用大小为402736字节.
当然了,如果你想把.text也放进ram里,那么ram占用大小就成了883784字节,flash占用大小为0字节.至于哪个段放入哪个区域,可以在链接脚本里指定.指定不是随意的,也有一定的规则.比如.bss .data段是不可以放到flash中去的.
GCC全过程详解+剖析生成的.o文件(2)相关推荐
- GCC全过程详解+剖析生成的.o文件
使用GCC编译一个.c文件影藏了哪些过程? GCC四步详解 第一步:预处理(也叫预编译) gcc -E hello.c -o hello.i 或者 cpp hello.c > hello.i ...
- GCC全过程详解+剖析生成的.o文件[转]
使用GCC编译一个.c文件影藏了哪些过程? GCC四步详解 第一步:预处理(也叫预编译) gcc -E hello.c -o hello.i 或者 cpp hell ...
- Linux平台Makefile文件的编写基础篇和GCC参数详解
问:gcc中的-I.是什么意思....看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/incl ...
- 浏览器解析html全过程详解
前端文摘:深入解析浏览器的幕后工作原理 关于浏览器解析html全过程详解 输入URL到浏览器接收返回的数据的整个过程 TCP报文格式详解 IP报文格式详解 Linux IO模式及 select.pol ...
- WSO2安装使用的全过程详解
WSO2安装使用的全过程详解 1. Wso2 Install 1.0 Port 1.1 Docker Install 1.2 Uninstall 2. Git Install 2.0 Port 2.1 ...
- 新手必看:访问url到加载全过程详解(看完不会我吃shi)
新手必看:访问url到加载全过程详解(看完不会我吃shi) 1.放在前面:新手必须知道的那些概念 1.1 什么是IP.域名.主机名.url.服务器 1.2 http & https 1.3 O ...
- Apollo6.0代码Lattice算法详解——Part5: 生成横纵向轨迹
Apollo6.0代码Lattice算法详解--Part5: 生成横纵向轨迹 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc中代码部分 ...
- 系统启动U盘制作全过程详解
叙:之前自己的系统是家庭版的,在自己升级为专业版的时候出了问题,很生气想重装系统,但是苦于没有系统U盘,想自己制作一个系统U盘,但当时出差手里又没有带空白U盘,很尴尬~,最后自己自己在网上查了很久,试 ...
- 视频教程-javascript/jquery全过程详解-Java
javascript/jquery全过程详解 资深大数据.java讲师,十年开发经验,曾经任职于北大青鸟.讯腾软件等多家知名教育机构,精通javaweb, 前端技术,J2EE技术体系,熟练使用Spri ...
最新文章
- Maven最佳实践:划分模块
- dev schedulercontrol 不显示周_CBA更新伤病报告:丁彦雨航仍需5周 阿联还要休养半年...
- 刘宇凡:数字让切糕与电商溅起涟漪
- 2014 年编程语言排名,人人都爱 TypeScript
- mysql root情况
- php pecl memcached,php – 安装PECL Memcached错误
- Marketing Cloud的Contact主数据创建
- mp4(H264容器)的详细文件格式分析
- Typename和Class在声明模板时的区别
- Jquery简单幻灯片
- 20.并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解
- nginx 集群部署
- 哪个品牌台灯护眼效果好?分享被央视315表扬的护眼灯
- 小学一年级20以内加减法题目自动生成(家长的福利,孩子的魔鬼)
- MySQL数据库课程设计_Wincc实现与数据库的交互以及报表的实现方式
- JJY本地服务器以服务方式运行不能读取消息文件
- 关于svn在eclipse中上传和拉取代码
- 怎么改html文件的桌面图标,教你怎么把软件图标换成自己喜欢的图标
- Python+Vue计算机毕业设计网上书城系统t9avi(源码+程序+LW+部署)
- Android获取屏幕信息的几种方式
热门文章
- git cherry-pick
- JDK各版本内容和新特性
- *Codeforces587E. Duff as a Queen
- Python 【第八章】:JavaScript 、Dom、jQuery
- reactNative 打包那些事儿
- 损害计算机系统,哪些情况下容易导致电脑系统崩溃损坏?
- 神经网络训练集的图片到底是如何相互作用的?
- image.open()得到的图片是什么类型_500G图片1秒压缩成200M,这个方法也太逆天了吧!完全免费...
- Ardino基础教程 7_蜂鸣器发声实验
- ubuntu9.10配置编译xawtv-3.95