链接器从哪里获得库名?
Where does the linker get library names?
我是开发新手,想知道链接器是如何获取库名称的?
例如,在链接器添加行中,当我想添加对 libxml2 的支持时,命令是 -lxml2。然而,当我想为 xmlsec 添加库时,它是 -lxmlsec1。当我想添加 openssl 时,我需要 -lcrypto 和 -lssl。
有人可以向我解释这些图书馆名称的来源吗?它似乎不是很直观。如果我想包含一个库,我应该如何找到要使用的 -l 命令?
这是在 ubuntu 系统上开发 C++ 程序。
'regular' 链接器是我所知道的最愚蠢的程序 :) 对于库,它遵循一组非常简单的规则。首先,对于每个 -l 规则,它在前面添加 lib 并在末尾添加 .a 以形成静态库名称。它还通过添加 .so 而不是 .a 来形成动态库名称。对于每个 -I 规则,它都会将指定路径添加到它的库搜索路径中。
因此,当它看到 -l 规则时,并查看由 -L 规则设置的所有库路径(按照它们在命令行中出现的顺序),看看它是否可以在此找到动态或静态库位置(如果它可以看到两者,它会根据 -B 规则选择一个)。
这是一个笼统的介绍。现在,对于您的特定问题,为了检查您应该包含哪个库,您应该阅读文档。我总是告诉您您需要哪些 -l 规则。
我是开发新手,想知道链接器是如何获取库名称的? 例如,在链接器添加行中,当我想添加对 libxml2 的支持时,命令是 -lxml2。然而,当我想为 xmlsec 添加库时,它是 -lxmlsec1。当我想添加 openssl 时,我需要 -lcrypto 和 -lssl。 有人可以向我解释这些图书馆名称的来源吗?它似乎不是很直观。如果我想包含一个库,我应该如何找到要使用的 -l 命令? 这是在 ubuntu 系统上开发 C++ 程序。
'regular' 链接器是我所知道的最愚蠢的程序 :) 对于库,它遵循一组非常简单的规则。首先,对于每个 -l 规则,它在前面添加 lib 并在末尾添加 .a 以形成静态库名称。它还通过添加 .so 而不是 .a 来形成动态库名称。对于每个 -I 规则,它都会将指定路径添加到它的库搜索路径中。
因此,当它看到 -l 规则时,并查看由 -L 规则设置的所有库路径(按照它们在命令行中出现的顺序),看看它是否可以在此找到动态或静态库位置(如果它可以看到两者,它会根据 -B 规则选择一个)。
这是一个笼统的介绍。现在,对于您的特定问题,为了检查您应该包含哪个库,您应该阅读文档。我总是告诉您您需要哪些 -l 规则。