如何使用sys包管理器安装的开发包?

如何使用sys包管理器安装的开发包?

我对如何*-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-devapt安装软件包后,软件包管理器希望我做什么*-dev

答案1

开发包通常包含一个pkg-configin /usr/lib/pkgconfig.该程序可用于(除其他外)查询使用该库所需的 C 编译器和链接器标志。

对于libxml2-devc 编译器标志包括-I/usr/include/libxml2

$ pkg-config libxml-2.0 --cflags
-I/usr/include/libxml2

使用它的一种方法是:

gcc $(pkg-config libxml-2.0 --cflags --libs) main.c

相关内容