我有一个使用libusb编写/构建的共享库
当我构建时,我必须与libusb共享库链接 - 到目前为止这么简单
但如果我然后编写/构建一个使用我的共享库的exe,当我构建那个exe时,我还必须链接到libusb
我会认为答案应该是否定的,只要我的共享lib知道在哪里找到应该没问题的libusb
但实际上,答案是肯定的,exe必须链接到libusb,或者它抱怨它无法找到我的共享lib调用的libusb函数的引用。
为什么我的exe需要链接到libusb以及共享库 - 当然它应该将责任转移到共享库而不必担心它?
更新:
试图想象它:
myexe
|
| links to:
|
mylib.so
|
| links to:
|
libusb-1.0.so
对我来说,myexe也必须显式链接到libusb-1.0似乎是多余的,因为这些知识已经隐含在以前的链接中了?
澄清一下,myexe 只调用调用mylib.so中定义的函数,它不直接调用任何libusb-1.0函数。对libusb-1.0函数的唯一调用是由mylib.so
中的函数构成的答案 0 :(得分:1)
是的,从理论上讲,您还必须关联libusb
。但是像libtool
这样的工具可以自动化第三级库依赖关系链接。因此libtool
会在您关联libusb
mylib.so
参考http://www.gnu.org/software/libtool/manual/html_node/Inter_002dlibrary-dependencies.html