什么是* -devel包?

像“libgtk + -devel”或“python-devel”等开发包的效用是什么? 它们是否包含图书馆的来源? 它与libgtk +等非开发包有什么不同?

*-devel包(通常在基于Debian的发行版中称为*-dev )通常是针对给定库编译代码所需的所有文件。

要使用库libfoo运行应用程序,只需要实际共享库文件( *.so.* ,例如libfoo.so.1.0 )(可能还需要一些数据文件和一些特定于版本的符号链接)。

当您真正想要编译使用该库的C应用程序时,您将需要描述该应用程序的接口的头文件( *.h ,例如foo.h )以及共享库的无版本符号链接。 ( *.so ,例如libfoo.so – > libfoo.so.1.0 )。 这些通常捆绑在*-devel包中。

有时, *-devel包还包括静态编译的库版本( *.a ,例如libfoo.a ),以防您想要构建完全不依赖于动态库的独立应用程序。

其他语言(例如Java,Python,…)使用不同的方式来注意库的API(实际上包括实际库中的所有必要信息),因此通常不需要单独的*-devel包(除了可能用于文档和其他工具)。

它们通常包含必要的标头和库。 例如,如果要在自己的应用程序中嵌入Python解释器,python-devel将提供所需的Python头文件和库。 还包括一些其他工具和文档(例如开发人员手册或代码示例)。