当前位置: 首页 > 面试题库 >

gcc可以在ELF二进制文件中添加版本信息吗?

邓昊天
2023-03-14
问题内容

我的意思是gcc是否可以将某些源代码版本的infor作为部分或类似内容插入到ELF二进制文件中。我不想更改我的源文件,但是在Makefile中使用gcc选项添加了一些信息。


问题答案:

您可以将版本信息发送到文本文件中,然后将该文本文件转换为目标文件,然后将其静态链接到可执行文件中。

第一步很简单,但是您必须编写一些代码:脚本或类似的东西,以您喜欢的纯文本文件格式书写版本信息。然后version.o从version.txt,用写makefile规则,产生的发言权objcopy命令。现在,您将拥有一个目标文件,其中定义了两个有用的符号:文本版本信息的开头和结尾。将生成的对象添加到可执行文件中,您将可以通过两种方式访问​​版本:通过strings在二进制文件上运行,或通过在应用程序中编写代码以打印版本字符串(您需要声明开始和结束)符号作为某些头文件中的变量)。



 类似资料:
  • 问题内容: 在Linux上,是否可以将版本信息嵌入到ELF二进制文件中?我想在编译时嵌入此信息,以便稍后可以使用脚本将其提取。一种骇人听闻的方法是植入可以使用命令提取的内容。是否有更常规的方法,类似于Windows DLL的Visual Studio工厂版本信息(注意DLL属性中的版本选项卡)? 问题答案: 如果使用cvs或subversion,执行此操作的一种方法是在源文件中使用特殊格式的特殊i

  • 接口说明 为当前位置设置描述信息、备注信息等,以更好的了解当前位置的基本概况,可以调用该接口来设置相关的信息说明 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/marker/1.0.0/addTabTxt 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 mId string form 是 标注ID

  • 我正在用CLion开发一个STM32F429,并试图从三个。精灵文件创建一个合并的。精灵文件的布局应该是这样的: 引导程序。elf(最大256K,但大小不一) 这使得总数达到100万。 我已经试着转换了。elf文件到。bin(带有arm none eabi objcopy)并创建一个1M。bin文件和我编写的自定义工具。我可以确认一下房间的布局。这是正确的。然后我转换生成的。bin文件返回到。精灵

  • 问题内容: 我需要能够向ELF文件添加任意部分。我无法在该程序中使用GPL代码,因此BFD成为不可能。我可以使用libelf / gelf来阅读节,但是这些文档很少,因此我无法弄清楚如何添加节。有人知道怎么做这个吗?我宁愿不编写自己的ELF代码。 问题答案: 关于ELF文件标头的问题有几个(可能)相关答案。提到的接受的答案用于将部分添加到ELF文件,并且BSD bintools 声称具有BSD许可

  • 问题内容: 有没有办法知道二进制文件的构建版本? 我的工作站上有多个go实例,因此我想验证是否使用了正确的实例。 问题答案: 在运行时使用runtime.Version()来确定您的二进制文件是用哪个版本的Go构建的: 版本返回Go树的版本字符串。它可以是序列号,也可以是发行标签,如“ release.2010-03-04”。尾部的+表示在构建时树已进行了局部修改。

  • 问题内容: 首先,我已经在Google上进行了搜索,但只找到了将压缩文件(例如)嵌入到Shell脚本中的示例。 基本上,如果我有一个打印字符串的C程序(),请说 Hello World! 。 我编译它以获得可执行的二进制文件 现在我有一个shell脚本 我要问的是是否有可能将二进制( hello )嵌入到shell脚本中,以便在我运行时 它执行二进制文件以打印 Hello World! 。 澄清