重命名符号失败,并出现错误

问题描述 投票:1回答:1

我已经安装了新的glib库2.6版,并且在创建后我试图使用objcopy命令重命名glib库中的某些符号。重命名符号是我们项目支持所必需的。

它失败并出现以下错误

objcopy --redefine-syms=glibrename libglib-2.0.a
BFD: libglib-2.0.a(deprecated_gcompletion.c.o): invalid relocation type 42
BFD: BFD version 2.20.51.0.2-5.36.el6 20100205 assertion fail elf64-x86-64.c:290
BFD: libglib-2.0.a(deprecated_gthread-deprecated.c.o): invalid relocation type 42
BFD: BFD version 2.20.51.0.2-5.36.el6 20100205 assertion fail elf64-x86-64.c:290
BFD: libglib-2.0.a(deprecated_gthread-deprecated.c.o): invalid relocation type 42
BFD: BFD version 2.20.51.0.2-5.36.el6 20100205 assertion fail elf64-x86-64.c:290
BFD: libglib-2.0.a(deprecated_gthread-deprecated.c.o): invalid relocation type 42
BFD: BFD version 2.20.51.0.2-5.36.el6 20100205 assertion fail elf64-x86-64.c:290
BFD: libglib-2.0.a(deprecated_gthread-deprecated.c.o): invalid relocation type 42
BFD: BFD version 2.20.51.0.2-5.36.el6 20100205 assertion fail elf64-x86-64.c:290
BFD: libglib-2.0.a(deprecated_gthread-deprecated.c.o): invalid relocation type 42

glibrename是一个文件,其中定义了所有glib原始符号,并已重命名了我想要的符号。

示例文件内容将为:

 glib_melloc test_glib_melloc
 glib_sym    test_glib_sym

这是我的objcopy版本:

[kltest@il-kltest ~]$ objcopy --version
GNU objcopy version 2.20.51.0.2-5.36.el6 20100205
Copyright 2009 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
 This program has absolutely no warranty.

任何人请帮忙,为什么我遇到这个问题,知道吗?

elf glib objcopy
1个回答
0
投票

恐怕Binutils 2.20太老了。 (已有9年的历史了。)关于v2.25 /.26引入了对重定位类型42的支持。

© www.soinside.com 2019 - 2024. All rights reserved.