我想使用objcopy将文本文件的二进制形式包含到可执行文件中。 (在运行时,我需要将文件作为字符串)。在链接器需要从符号名称中找到引用之前,此方法可以正常工作。问题是objcopy在符号名前添加了文件的路径名。由于我使用的是GNU Autotools来运送软件包,因此此前缀的路径名会更改,并且我不知道在C/C++程序中使用哪个外部链接器符号。

nm libtest.a |grep textfile
textfile.o:
00001d21 D _binary__home_git_textfile_end
00001d21 A _binary__home_git_textfile_size
00000000 D _binary__home_git_textfile_start

产生libtest.a(摘自Makefile.am):
SUFFIXES = .txt
.txt.$(OBJEXT):
    objcopy --input binary --output elf32-i386 --binary-architecture i386 $< $@

如何告诉objcopy仅将文件名的茎作为链接器符号告诉我们?还是有解决此问题的另一种方法?

最佳答案

具有讽刺意味的是,您可以使用objcopy通过--redefine-sym选项解决问题,该选项允许重命名符号...

关于c++ - objcopy在目录路径名前添加符号名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15594988/

10-10 19:49