我想在项目中使用libxml2 C库(我在Windows上,在CMD中使用gcc(。我正试图将它(作为一个静态库(包含在一个源文件中,这样我就可以使用它的函数了。但是,gcc在查找库的头文件时遇到了问题。那么,我如何配置gcc编译,以便它能够找到必要的头文件呢?
我的文件夹结构:
root
|
|--test.c
|--bin/--libxml2.a
|--lib/--libxml2.lib
|--include/--libxml/
|--c14v.h
|--parser.h
|--xmlstring.h
|--xmlversion.h
|... and many other header files
正如你在上面看到的,我已经编译了这个库。因此,我有它的归档(libxml2.a
(和lib文件(libxml2.lib
(,以及它的所有头文件(include/libxml/
(。现在,我正在尝试编译下面这个简单的test.c
文件:
#include <stdio.h>
#include "libxml/parser.h"
int main () {
return 0;
}
当我试图用gcc test.c -o test -I/include/ -L/bin/ -llibxml2
命令编译它时,我得到了以下错误:
test.c:2:10: fatal error: libxml/parser.h: No such file or directory
2 | #include "libxml/parser.h"
| ^~~~~~~~~~~~~~~~~
compilation terminated.
据我所知,我使用了-I
-gcc选项,因为头文件在include
文件夹中。但这并没有奏效。因此,我尝试删除include
文件夹。所以我的文件夹结构变成:
root
|
|--test.c
|--bin/--libxml2.a
|--lib/--libxml2.lib
|--libxml/
|--c14v.h
|--parser.h
|--xmlstring.h
|--xmlversion.h
|... and many other header files
现在,使用gcc test.c -o test -L/bin/ -llibxml2
,我得到了关于不同文件的相同错误。因此,gcc现在可以找到libxml/parser.h
,但找不到libxml/xmlversion.h
,它是libxml
文件夹中的许多头文件之一。
In file included from test.c:2:
libxml/parser.h:15:10: fatal error: libxml/xmlversion.h: No such file or directory
15 | #include <libxml/xmlversion.h>
| ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
我在这里做错了什么?我是否可以将include
文件夹路径传递给gcc(使用-l
或其他选项(,以便它可以找到存储在该文件夹中的所有头文件?
此外,我是否使用-l
和-L
选项正确链接库?我这里有什么东西不见了?
谢谢你的帮助!
gcc test.c -o test -Iinclude/ -Llib/ -l:libxml2.a