2015-10-19 207 views
0

也许这是一个愚蠢的问题,但到目前为止我无法找到它的直接答案。可以在两个共享对象(.so)之间共享变量吗? 例如:在一个库中定义全局变量并在另一个库中将其声明为extern。我的答案是 - “不”,但我无法解释为什么。在两个共享对象之间共享变量

+0

为什么不呢?从标准C库考虑旧的'errno'实现。你不应该这样做(因为它仍然是一个全局变量),但你可以。 – Hcorg

+1

是的,你可以。问题是任何链接到库的可执行文件都被强制链接到另一个,这会创建一个依赖关系(紧密耦合) – Nandu

回答

0

是的,当然。

如果无法使用共享库中定义的符号,则它们将没有用处。

如果您指的是另一个共享库中的符号,那么您的最终可执行文件必须[动态]链接到两者。