我有一个头文件,例如“elf.h”或方法名称,例如“ElfData::addToSection()”。
我想知道相应的库文件——它的名称和它的位置,例如 /usr/lib/libelf.a 或 /usr/lib/libelf.so.0.8.13。有什么方法可以解决这个问题。什么是最好的方法。
另外我想知道哪些标题,函数与指定的库文件匹配。操作系统 = Ubuntu Linux。
可能是,这些问题很愚蠢:)但如果你能回复我将不胜感激。
对于较新的库,您可以经常使用该pkg-config
工具。你给它你想要链接的包的名字,它给你适当的编译器/链接器选项:
$ pkg-config --cflags glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
$ pkg-config --libs glib-2.0
-lglib-2.0
这样你就可以把它放在你的Makefile
:
LIBS = `pkg-config --libs glib-2.0` -lm # link with glib and libm
CFLAGS = -O2 `pkg-config --cflags glib-2.0`
(它不会为您找到标题,只是包含目录。)
对于不支持pkg-config
的库,没有一种正确的方法可以找出库所属的标头,反之亦然。您通常要么将这些知识手动编码到构建系统中,要么使用诸如GNU 自动工具之类的东西,它允许检查多个库/头文件中的标识符或符号。