首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除objcopy符号名中的路径

删除objcopy符号名中的路径
EN

Stack Overflow用户
提问于 2013-12-11 19:00:32
回答 2查看 2.1K关注 0票数 5

我需要在我的项目中包含一个二进制程序。我使用objcopy从二进制文件创建一个对象文件。对象文件可以在我的程序中链接。objcopy创建适当的符号来访问二进制数据。

示例

代码语言:javascript
复制
objcopy -I binary -O elf32-littlearm --binary-architecture arm D:\Src\data.jpg data.o

生成的符号是:

代码语言:javascript
复制
_binary_D__Src_data_jpg_end
_binary_D__Src_data_jpg_size
_binary_D__Src_data_jpg_start

问题是符号包括二进制文件D__Src_的路径。当从不同位置包含二进制文件时,这可能会有所帮助。但让我烦恼的是,当我从不同的位置获取文件时,符号会发生变化。由于这将在多个构建站上运行,因此不能使用--重新定义-sym选项来剥离路径。

如何摆脱符号名中的路径?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-31 15:12:09

我通过在objcopy中使用这个开关解决了这个问题:

-前缀-区段=abc

这提供了一种唯一标识二进制对象文件(例如)中数据的方法。二进制。o)

然后,在链接器脚本中,您可以在包含binary.o的地方定义自己的标签。由于您不再引用二进制文件中的任何内容,如果使用-gc-区段开关,二进制文件将被链接器抛出。现在,binary.o中的部分将是abc.data。使用链接器脚本告诉链接器不要抛出binary.o。链接器脚本将包含以下内容:

代码语言:javascript
复制
__binary_start__ = .;
KEEP(*(abc.data))
binary.o
*(abc.data)
. = ALIGN(4);
__binary_end__ = .;
票数 2
EN

Stack Overflow用户

发布于 2016-08-12 01:54:19

这个开关--本地化--符号对我有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20527725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档