我对如何*-dev
在 Ubuntu 中使用软件包感到困惑。
我想libxml2
在 Ubuntu 中使用该库来开发我自己的代码。我使用安装了 libxml2-dev apt-get
,它将头文件放在/usr/include/libxml2/libxml
.
为了包含头文件,例如parse.h
,我必须使用以下路径libxml2/libxml/parser.h
。这很好用,但随后我遇到了一系列问题。
parse.h
由开发人员编写,包含另一个 header libxml/xmlversion.h
。不幸的是,该路径与该-dev
包头文件在 Ubuntu 中的存储方式不一致。也就是说,xmlversion.h
需要(至少由我的程序)调用为libxml2/libxml/xmlversion.h
.
同样,调用也不在默认搜索路径中的xmlversion.h
标头,从而创建一系列级联的“没有此类文件”错误。libxml/xmlexports.h
我认为我可以通过手动指定要包含的搜索路径来解决这个问题/usr/local/libxml2
,但这似乎否定了使用像apt-get
.至少,我假设包管理器在安装*-dev
包时会正确配置编译器搜索路径
*-dev
我在使用软件包方面缺少什么?这是正常行为还是特定问题libxml2-dev
?apt
安装软件包后,软件包管理器希望我做什么*-dev
?
答案1
开发包通常包含一个pkg-config
in /usr/lib/pkgconfig
.该程序可用于(除其他外)查询使用该库所需的 C 编译器和链接器标志。
对于libxml2-dev
c 编译器标志包括-I/usr/include/libxml2
:
$ pkg-config libxml-2.0 --cflags
-I/usr/include/libxml2
使用它的一种方法是:
gcc $(pkg-config libxml-2.0 --cflags --libs) main.c