链接到静态库时未定义对函数的引用

Undefined reference to functions while linking to static library

我将 X.a 静态库包含到我的代码中,并且 X.a 需要 a.so 库,所以我只需要包含 X.a 还是需要将两个库都包含到我的代码中?

我已经尝试在我的代码中包含唯一的 X.a,但它没有找到 a.so 中函数的定义。X.a 使用了这些函数。

do I need to include X.a only or do I need to include both libaries to my code?

你的代码中没有 "include" 库,你 link 它们在里面。

当您 link 反对 X.a 时,linker 将库中使用的部分复制到您的可执行文件中。

当你 link 反对 a.so 时,linker 会注意到 a.so 在运行时是必需的,并且(如果你使用的是版本化符号) a.so 中的符号版本必须在运行时存在,但不会将 a.so 中的任何代码复制到您的可执行文件中。但是,在 link 时仍然需要 a.so

有很多方法可以在没有 a.so 的情况下 link 可执行文件,但最好留给专家(这种方法可能存在太多问题)。