如何用二进制文本指定LD中的名称?

时间:2014-10-21 23:35:55

标签: c++ ld

我正在尝试将ld的文本文件包装到.o中。鉴于我的项目的Makefile是如何设置的,文本文件的完整路径将传递给ld。这会导致生成的名称包含该路径。我不希望这样,因为我无法在我的C ++源代码中链接该名称。

运行ld时,有没有办法更改名称或前缀?

ld -r -b binary /path/to/source/Value.txt -o Value.o
objdump -x Value.o | grep binary
0000000000000142 g       .data  0000000000000000 _binary__path_to_source_Value_txt_end
0000000000000142 g       *ABS*  0000000000000000 _binary__path_to_source_Value_txt_size
0000000000000000 g       .data  0000000000000000 _binary__path_to_source_Value_txt_start

我希望看到_binary_Value_txt_end等名称。

1 个答案:

答案 0 :(得分:1)

根据Captain Oblivious的评论,我能够开发一个Makefile规则:

%.o: %.txt
    pushd $(dir $<) ; $(LD) -r -b binary $(notdir $<) -o $@ ; popd

这会更改文本文件的目录位置,以便ld创建漂亮的已知名称。我需要做一些工作来确保$@是绝对路径,以便在构建目录中创建.o