我有一个使用基于gcc的编译器编译的预编译库,我想将函数从默认的.text
部分移动到其他部分名称(让我们说foo
) 。有没有办法使用binutils而无需重新编译?
答案 0 :(得分:0)
.a库或静态库只不过是对象文件的集合。
因此在链接之前,您可以使用objcpy重命名命令来更改节的名称。 同样,您也可以使用“ -redefine-sym”来更改符号名称
-rename-section oldname = newname [,flags] 将部分从旧名称重命名为新名称,可以选择更改 部分的标志到过程中的标志。这有好处 使用链接程序脚本执行重命名 输出保持为目标文件,不会成为链接文件 可执行文件。 示例:-
objcopy -I binary -O <output_format> -B <architecture> \
--rename-section .data=.rodata,alloc,load,readonly,data,contents \
<input_binary_file> <output_object_file>