问题描述
我使用预构建的 libc.a,其中有一些副本重定位:
public class Constructor {
private final String a;
private final String b;
private final String c;
public Constructor(String a) {
this.a = a;
this.b = getB(a);
this.c = getC(a,b);
}
public String getB(String a) {
return a.trim();
}
public String getC(String a,String b) {
return a + b;
}
public static void main(String[] args) {
Constructor myConstructor = new Constructor(" Hello ");
System.out.println(myConstructor.a);
System.out.println(myConstructor.b);
System.out.println(myConstructor.c);
new Constructor(null);
}
0001f554 00010f03 R_ARM_REL32 0001fb00 __memcpy_neon
0001f558 00037803 R_ARM_REL32 00020000 __memcpy_vfp
0002100e 0000f303 R_ARM_REL32 0007aa78 __libc_multiple_thread
0002108e 0000f303 R_ARM_REL32 0007aa78 __libc_multiple_thread
0002110e 0000f303 R_ARM_REL32 0007aa78 __libc_multiple_thread
0003b810 0000f303 R_ARM_REL32 0007aa78 __libc_multiple_thread
0003b98e 0000f303 R_ARM_REL32 0007aa78 __libc_multiple_thread
0002b3a2 00006c03 R_ARM_REL32 00077998 __pointer_chk_guard_lo
00044334 00006c03 R_ARM_REL32 00077998 __pointer_chk_guard_lo
这没有任何警告或错误。
但是当我执行一个依赖于这个 libshared 的可执行文件时,我有这个:
arm-linux-gcc -fPIC -shared shared.c ./libc.a -o libshared.so
那么首先,error while loading shared libraries: ./libshared.so: unexpected reloc type 0x03
的真正含义是什么,为什么 gcc 允许我创建这个 libshared 没有任何错误或警告?
应该不可能从具有某些副本重定位的对象创建共享库。
几秒钟,我该如何解决我的问题,我是否必须使用 -fPIC 标志重建 libc.a?有没有其他解决方案可以让我不修改这个 libc.a ?
哪个库实现了这些 R_ARM_REL32
依赖项,为什么 libc.a 不是独立的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)