繁体   English   中英

链接器从哪里获得库名称?

[英]Where does the linker get library names?

我是开发的新手,我想知道链接器如何获取库名? 例如,在链接程序添加行中,当我想添加对libxml2的支持时,命令为-lxml2。 但是,当我想为xmlsec添加库时,它是-lxmlsec1。 当我想添加openssl时,我同时需要-lcrypto和-lssl。 有人可以向我解释这些库名的来源吗? 似乎不是很直观。 如果我想包括一个库,我应该如何找到要使用的-l命令? 这是在开发C ++程序的ubuntu系统上。

“常规”链接器是我所知的最笨的程序:)对于库,它遵循一组非常简单的规则。 首先,对于每个-l规则,它在前面添加lib并在最后添加.a以形成静态库名称。 它还通过添加.so而不是.a来形成动态库名称。 对于每个-I规则,它都会向其库搜索路径添加指定的路径。

因此,当它看到-l规则并查看由-L规则设置的所有库路径时(按在命令行中出现的顺序),并查看它是否可以在此位置找到动态或静态库(如果可以)看到两者,则根据-B规则选择一个)。

这是一个通用的介绍。 现在,对于您的特定问题,为了检查您应该包括哪个库,您应该阅读文档。 我总是告诉您您需要哪个-l规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM