我正在尝试将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
等名称。
答案 0 :(得分:1)
根据Captain Oblivious的评论,我能够开发一个Makefile规则:
%.o: %.txt
pushd $(dir $<) ; $(LD) -r -b binary $(notdir $<) -o $@ ; popd
这会更改文本文件的目录位置,以便ld
创建漂亮的已知名称。我需要做一些工作来确保$@
是绝对路径,以便在构建目录中创建.o
。