在一个项目中,我的同事创建了一个静态库,例如 liba.a,它与 app 链接。
在 liba.a 中,他将 libc malloc() 覆盖为他的所有者版本。
我创建了一个共享库 libs.so,它也与应用程序链接。
问题是当我的 libs.so 与应用程序链接时,我的 libs.so 中使用的 malloc() 将是 liba.a 中的那个,而不是标准 libc.so 中的那个,这会导致问题。
然后,我想将 libc.a 静态链接到我的 libs.so,我对 gcc 使用了 -static -shared -fPIC 标志。
但我总是得到 arm-2012.03/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.3/../../../../arm-none-linux-gnueabi/bin /ld: arm-2012.03/bin/../arm-none-linux-gnueabi/libc/usr/lib/libc.a(dl-tsd.o)(.text+0x14): R_ARM_TLS_LE32 在共享对象中不允许重定位.
有人知道吗?
谢谢转发。