当前位置: 首页 > news >正文

程序员的自我修养(三)

前言

本节主要介绍目标文件的格式,由于我主要是在Linux开发,所以关注Linux操作系统中的目标文件格式。在Linux中,目标文件的主要格式为ELF(Executable Linkable Format)格式。

ELF文件类型说明实例
可重定位文件(Relocatable File)这类文件包含了代码和数据,可以被用来链接成可执行文件或共享目标文件,静态链接库也可归为这一类Linux的.o
可执行文件(Executable File)这类文件包含了可以直接执行的程序,它的代表就是ELF可执行文件,他们一般都没有扩展名比如/bin/bash文件
共享目标文件(Shared Object File)这种文件包含了代码和数据,可以在以下两种情况下使用。一种是链接器可以使用这种文件跟其他的可重定位文件和共享目标文件链接,产生新的目标文件,第二种是动态链接器可以将几个这种共享目标文件与可执行文件结合,作为进程映射的一部分来运行Linux的.so,如/lib/glibc-2.5.so
核心转储文件(Core Dump File)当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件Linux下的core dump

我们在Linux下使用file命令来查看相应的文件格式。可以使用以下命令查看ELF文件段信息:

objdump -h SimpleSection.o

打印的第二行会显示各个段的属性CONTENTS表示该段在文件中存在,我们可以看到.bss段是没有CONTENTS属性的,表示它在ELF文件中不存在。.note.GNU-stack虽然有CONTENTS但是它的长度为0。
使用objdump,参数-s表示打印各个段的详细内容,-d表示所有包含指令的段反汇编,所以结合起来就是:

objdump -s -d SimpleSection.o

还可以使用objdump -x打印各个段的详细内容。具体打印内容就需要详细熟悉了。
还有一个objcopy命令可以将一些文件作为目标文件中的一个段。比如我们有一个文件叫“image.jpg”,那么我们想把它作为一个段放在目标文件中可以使用以下命令:

objcopy -I binary -O elf32-i386 -B i386 image.jpg image.o
objdump -ht image.o

我们还可以指定段放置变量和函数,在gcc中可以这么做:

__attribute__((section("FOO"))) int global = 42;
__attribute__((section("BAR"))) void foo(){}

那么这个全局变量和函数就会分别被放到FOO段和BAR段中。
(未完待续…)

http://www.dtcms.com/a/536914.html

相关文章:

  • 【C++】--list的使用和模拟实现
  • Windows 11 AI原生转型:代理式工作流的核心技术与模块化架构实践
  • 网站前台设计方案企业vi设计书籍
  • 建设读书网站的意义免费ppt模板在哪里下载
  • C++2D地铁跑酷代码
  • 库室安防设施架构-自主可控、支持国产化
  • 站长工具之家百度权重4网站值多少钱
  • Vue3 计算属性与监听器:computed、watch、watchEffect 用法解析
  • 题解:P14307 【MX-J27-T4】点灯
  • 网站关键词一般设置几个北京一家专门做会所的网站
  • 语文建设投稿网站wordpress静态cdn
  • 精品数据分享 | 锂电池数据集(一)新能源汽车大规模锂离子电池数据集
  • 01.LLM的背景知识
  • 17-21自增,自减,逻辑运算符,非布尔值的与或非,赋值运算符
  • 感兴趣可以看看使用xtrabackup 备份与恢复MySQL数据完整操作过程
  • 数据库安装卸载及作业
  • termux下python编程尝试,转换全能扫描王生成pdf文件
  • 做用户名和密码网站页面设计最简单的企业网站
  • wordpress设置数字形链接报404长沙做网站seo
  • 山区农产品售卖系统
  • 做微信的网站有哪些永久免费企业建站官网大全
  • 如何在linux抓包tcpdumpwireshark如何使用
  • FFmpeg 基本数据结构 AVCodec分析
  • QtQuick3D入门(2):材质 material
  • 怎么做网上卖菜网站酒店管理专业建设规划
  • 20251027 Prism.Unity依赖注入Demo
  • MES系统:论工单计划在智能制造中的核心串联作用​
  • 【C语言】程序控制结构
  • 厦门做网站哪家公司好非交互式网站可以做商城吗
  • OpenSSL3.5.2实现SM3数据摘要生成