将静态库与共享对象链接

linking static library with shared object

提问人:buchipper 提问时间:4/3/2014 最后编辑:Bhavesh Odedrabuchipper 更新时间:4/3/2014 访问量:127

问:

OS : AIX53

Language : C

我有一个共享对象

[a.so]它使用另一个静态库中的符号。用于创建 a.so 的链接行中未提供静态库 b.a。相反,它是在使用 a.so 的最终可执行二进制文件中提供的。[b.a]

当我运行可执行文件时,我从 a.so 收到未定义的符号错误。这些未定义的符号是在 b.a. 中定义的符号。不知道我在这里错过了什么。

此外,当我在 a.so 和可执行文件上执行 nm 时,找不到符号。我应该在 a.so 的链接行中包含 b.a 吗?我读到不建议将没有 fPIC 编译的静态库链接到共享对象中。请指教。

c 共享库 static-libraries undefined-reference

评论

0赞 Theolodis 4/3/2014
对我来说,链接到 是有效的。b.aa.so
0赞 buchipper 4/4/2014
@Theolodis - 感谢您的回复。但我不明白的是,当我将 [b.a] 与最终可执行文件链接时,[b.a] 中的符号不应该自动可供 [a.so] 使用吗?为什么它会抛出未定义的符号错误?

答: 暂无答案