我想使用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/