【发布时间】:2015-02-12 13:22:45
【问题描述】:
我需要通过将 .so 链接到其他开源库(一些以 .so 和一些以 .a 的形式提供)来创建一个 .so
是否可以通过将 .so 和 .a 的组合链接来创建 .so
例如假设我正在尝试通过将其与 liba.so、libb.a 链接来创建 libfinal.so
gcc -shared -Wl,-soname,libfinal.so -Wl,--no-undefined -la -lb
上述命令正在尝试查找不可用的 libb.so。有什么解决办法吗?
更新:问题似乎是 libb.a 是用 out -fPIC 选项编译的。 错误 --> 创建共享对象时无法使用针对“libipt_DNAT_init”的重定位 R_MIPS_26;用 -fPIC 重新编译
【问题讨论】:
-
IIRC 目标文件(及其档案)必须在没有选项的情况下列出。即尝试:
gcc -shared -Wl,-soname,libfinal.so -Wl,--no-undefined -la b -
显式使用完整路径和文件名?
-
添加完整路径会导致以下错误。 --> 无法读取符号:错误值
-
@AnupPatil 我上面的修改呢?
-
加上
-L.,编译行或多或少是正确的。如果链接器无法读取libb,则很可能 libb 已损坏或针对不同平台编译。
标签: c linux gcc shared-libraries