2012-04-20 54 views
0

我有一个头文件,例如“elf.h”或方法的名称,例如“ElfData :: addToSection()”。如何通过头文件或函数名检测库文件?反之亦然?

我想知道相应的库文件 - 它的名称和它的位置,例如/usr/lib/libelf.a或/usr/lib/libelf.so.0.8.13。 解决这个问题的方法有哪些。什么是最好的方法。

另外我想知道什么标题,功能匹配指定的库文件。 操作系统= Ubuntu Linux。

可能是,这些问题是愚蠢的:) ,但我会很感激,如果你能回答。

回答

1

对于较新的库,您可以经常使用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 autotools这样的方法来检查多个库/标题以获取所需的标识符或符号。

+0

谢谢larsmans先生的回复。我根本不熟悉GNU autotools。这将是greate如果你可以用“elf.h”来演示这个例子。 – 2012-04-20 16:06:26

+0

@LuckyMan:与'elf.h'无关,因为它没有声明任何函数。没有相应的库。 – 2012-04-20 20:19:04

相关问题