问题
可执行文件通过size默认选项berkeley查询可以得到text、data、bss各个段的大小,但是想要通过.map分析代码或者哪些常量的具体大小时需要进一步知道更详细的数据。而通过size xxx–format=SysV 查到.text 和.rodata 仅占用一部分大小,而其他的section到底是属于berkeley模式中的哪类就需要通过分析size源码。
源码下载
dawn@ubuntu:~$ which size
/usr/bin/size
dawn@ubuntu:~$ dpkg -S /usr/bin/size
binutils: /usr/bin/size
dawn@ubuntu:~$
通过which和dpkg -S 组合确认命令size是在binutils包中。
具体下载、编译、安装binutils包的方法如下,我们其实只要下载到源码包那一步(步骤3)就行了。
1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项
2、使用如下命令获取源码包的详细信息:
sudo apt-cache showsrc binutils 这用来查询当前镜像站点中是否有该源码包。
3、源码包中通常包含3个文件,分别以dsc,orig.tar.gz和diff.gz为后缀名。
sudo apt-get source binutils 命令来获取源码包,它会将源码包下载到用户当前目录
并在命令执行过程中,调用dpkg-source命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就在这里面。
sudo apt-get source binutils
要强调的是,在下载源码包前,必