【发布时间】:2013-12-11 19:00:32
【问题描述】:
我需要在我的项目中包含一个二进制程序。我使用 objcopy 从二进制文件创建目标文件。目标文件可以在我的程序中链接。 objcopy 创建适当的符号来访问二进制数据。
例子
objcopy -I binary -O elf32-littlearm --binary-architecture arm D:\Src\data.jpg data.o
生成的符号是:
_binary_D__Src_data_jpg_end
_binary_D__Src_data_jpg_size
_binary_D__Src_data_jpg_start
问题在于符号包含二进制文件D__Src_ 的路径。当从不同位置包含二进制文件时,这可能会有所帮助。但是当我从不同的位置获取文件时,符号会发生变化,这让我很困扰。由于这将在多个构建站上运行,因此无法使用 --redefine-sym 选项剥离路径。
如何去掉符号名称中的路径?
【问题讨论】:
-
@Daniel 你读了吗,为什么我拒绝了
--redefine-sym方法? -
我同意 --redefine-sym 不是一个好的解决方案,但我认为您的问题与 OP 基本相同。顺便说一句:我正在寻找同一个问题的答案。我目前的解决方法是将文件复制到目录中,然后执行 objcopy,然后在 Makefile 中 rm 复制 - 丑陋的 kludge。我认为您也可以 cd 到源目录并将 objcopy 的输出重定向回原始目录。 -- 仍然是一个杂乱无章的 IMO。
标签: binutils