如何获取特定头文件的适当的 lib 包名称

如何获取特定头文件的适当的 lib 包名称

编译源代码时出错是常见问题"abc.h no such file"。找到解决方案的唯一方法(据我所知)是在互联网上搜索。我需要做的是,编译源代码,它会给我一些错误,然后我必须通过互联网搜索来安装开发。

有什么方法可以通过头文件名获取 lib 包名称?假设我需要crypto.h文件,libssl-dev包含此文件。

但我怎么知道呢?我应该在哪里搜索?有参考网站或程序吗?

答案1

这类似于问题如何找到提供文件的包?

由于您要查找系统中没有的软件包,我建议您使用apt-file search <header file>。您可以微调搜索以避免扩展(即不列出foocrypto.html如果你正在寻找加密文件)。

你的命令看起来像apt-file -x search '/crypto.h$'

user@host$ apt-file -x search '/crypto.h$'

aroarfw-dev: /usr/include/aroarfw/crypto.h
asterisk-dev: /usr/include/asterisk/crypto.h
crtmpserver-dev: /usr/include/crtmpserver/common/utils/misc/crypto.h
libfaifa-dev: /usr/include/faifa/crypto.h
libgnutls-dev: /usr/include/gnutls/crypto.h
libntfs-dev: /usr/include/ntfs/crypto.h
libroar-dev: /usr/include/libroar/crypto.h
libsrtp0-dev: /usr/include/srtp/crypto.h
libssl-dev: /usr/include/openssl/crypto.h
libsyslog-ng-dev: /usr/include/syslog-ng/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/gcrypt/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/gnutls/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/nss/crypto.h
libxmlsec1-dev: /usr/include/xmlsec1/xmlsec/openssl/crypto.h
linux-headers-3.2.0-4-amd64: /usr/src/linux-headers-3.2.0-4-amd64/include/config/crypto.h
linux-headers-3.2.0-4-amd64: /usr/src/linux-headers-3.2.0-4-amd64/include/config/rt2x00/lib/crypto.h
linux-headers-3.2.0-4-common: /usr/src/linux-headers-3.2.0-4-common/include/linux/crypto.h
linux-headers-3.2.0-4-common-rt: /usr/src/linux-headers-3.2.0-4-common-rt/include/linux/crypto.h
linux-headers-3.2.0-4-rt-amd64: /usr/src/linux-headers-3.2.0-4-rt-amd64/include/config/crypto.h
linux-headers-3.2.0-4-rt-amd64: /usr/src/linux-headers-3.2.0-4-rt-amd64/include/config/rt2x00/lib/crypto.h

此外,如果你事先知道该包名为某事开发或者libsomething-dev您可以将其传输到grep

apt-file -x search '/crypto.h$' | grep '^lib[^:]*-dev'

这仅返回名为lib*-dev

最后,如果你只想要姓名包(而不是文件的路径),这样您就可以得到一个很好的包列表(每行一个),您可以使用它grep -o来代替。

apt-file -x search '/crypto.h$' | grep -o '^lib[^:]*-dev'

祝你编码愉快:)

相关内容